Migrar desde Godot 4.2 a Godot 4.3
For most games and apps made with 4.2 it should be relatively safe to migrate to 4.3. This page intends to cover everything you need to pay attention to when migrating your project.
Cambios importantes
Si estás migrando de 4.2 a 4.3, los cambios importantes que se enumeran aquí podrían afectarle. Los cambios se agrupan por áreas/sistemas.
Este artículo indica si cada cambio significativo afecta a GDScript y si el cambio significativo en C# es compatible binario o compatible con el código fuente:
Binary compatible - Existing binaries will load and execute successfully without recompilation, and the runtime behavior won't change.
Compatible con el código fuente: el código fuente se compila correctamente sin ningún cambio al actualizar Godot.
GDExtensión
Cambio |
Compatibilidad con GDScript |
Compatible con binarios C# |
Compatible con código fuente C# |
Introducido |
|---|---|---|---|---|
GDExtension |
||||
Método |
❌ |
❌ |
❌ |
|
Method |
❌ |
❌ |
❌ |
|
Propiedad |
❌ |
❌ |
❌ |
Dado que era prácticamente imposible usar estos métodos de forma útil, se han eliminado. En su lugar, utiliza GDExtensionManager::load_extension y GDExtensionManager::unload_extension para cargar y descargar correctamente una GDExtension.
Animación
Cambio |
Compatibilidad con GDScript |
Compatible con binarios C# |
Compatible con código fuente C# |
Introducido |
|---|---|---|---|---|
Animación |
||||
El método |
✔️ |
✔️ |
||
El método |
✔️ |
✔️ |
||
Method |
✔️ |
✔️ |
||
Method |
✔️ |
✔️ |
||
El método |
✔️ |
✔️ |
||
El método |
✔️ |
✔️ |
||
El método |
✔️ |
✔️ |
||
AnimationMixer |
||||
El método |
✔️ |
❌ |
❌ |
|
Skeleton3D |
||||
El método |
✔️ |
❌ |
✔️ |
|
La señal |
❌ |
❌ |
❌ |
|
BoneAttachment3D |
||||
El método |
✔️ |
Nodos GUI
Cambio |
Compatibilidad con GDScript |
Compatible con binarios C# |
Compatible con código fuente C# |
Introducido |
|---|---|---|---|---|
AcceptDialog |
||||
El método |
✔️ |
|||
Method |
✔️ |
Física
Cambio |
Compatibilidad con GDScript |
Compatible con binarios C# |
Compatible con código fuente C# |
Introducido |
|---|---|---|---|---|
PhysicsShapeQueryParameters3D |
||||
Property |
❌ |
❌ |
❌ |
Nota
En C#, la enumeración PhysicsServer3D.G6DofJointAxisFlag rompe la compatibilidad debido a la forma en que el generador de enlaces detecta el prefijo de enumeración. Se añadieron nuevos miembros en GH-89851 a la enumeración, lo que provocó que se cambiara el nombre de los miembros de la enumeración.
Renderizado
Cambio |
Compatibilidad con GDScript |
Compatible con binarios C# |
Compatible con código fuente C# |
Introducido |
|---|---|---|---|---|
RenderingDevice |
||||
Enum field |
✔️ |
❌ |
❌ |
|
Enum field |
✔️ |
❌ |
❌ |
|
Enum field |
✔️ |
❌ |
❌ |
|
Enum field |
✔️ |
❌ |
❌ |
|
Enum field |
✔️ |
❌ |
❌ |
|
Enum field |
✔️ |
❌ |
❌ |
|
El método |
✔️ |
|||
El método |
✔️ |
|||
El método |
✔️ |
|||
El método |
✔️ |
|||
El método |
✔️ |
|||
El método |
✔️ |
|||
El método |
✔️ |
|||
El método |
✔️ |
|||
El método |
✔️ |
|||
El método |
✔️ |
|||
RenderingServer |
||||
El método |
✔️ |
✔️ |
||
RenderSceneBuffersRD |
||||
Method |
✔️ |
✔️ |
||
Method |
✔️ |
✔️ |
||
Method |
✔️ |
✔️ |
||
Method |
✔️ |
✔️ |
||
Method |
✔️ |
✔️ |
||
Method |
✔️ |
✔️ |
Nota
Aunque los valores de los campos de enumeración en RenderingDevice.InitialAction y RenderingDevice.FinalAction cambiaron, el único método que los consumía (draw_list_begin) agregó un método de compatibilidad que admite los valores antiguos. Por lo tanto, en la práctica, no afecta la compatibilidad.
Nota
In C#, the enum RenderingDevice.DriverResource breaks compatibility because of the way the bindings generator
detects the enum prefix. New members were added in GH-83452 to the enum that caused the enum members to be
renamed.
Text
Cambio |
Compatibilidad con GDScript |
Compatible con binarios C# |
Compatible con código fuente C# |
Introducido |
|---|---|---|---|---|
Fuente |
||||
Method |
✔️ |
✔️ |
||
RichTextLabel |
||||
Method |
✔️ |
✔️ |
||
TextServer |
||||
Method |
✔️ |
✔️ |
||
TextServerExtension |
||||
Method |
❌ |
❌ |
❌ |
Audio
Cambio |
Compatibilidad con GDScript |
Compatible con binarios C# |
Compatible con código fuente C# |
Introducido |
|---|---|---|---|---|
AudioStreamPlaybackPolyphonic |
||||
Method |
✔️ |
✔️ |
TileMap
Cambio |
Compatibilidad con GDScript |
Compatible con binarios C# |
Compatible con código fuente C# |
Introducido |
|---|---|---|---|---|
TileData |
||||
Method |
✔️ |
✔️ |
||
Method |
✔️ |
✔️ |
XR
Cambio |
Compatibilidad con GDScript |
Compatible con binarios C# |
Compatible con código fuente C# |
Introducido |
|---|---|---|---|---|
WebXRInterface |
||||
Method |
✔️ |
❌ |
✔️ |
|
XRServer |
||||
Method |
✔️ |
❌ |
❌ |
Plugins del editor
Cambio |
Compatibilidad con GDScript |
Compatible con binarios C# |
Compatible con código fuente C# |
Introducido |
|---|---|---|---|---|
EditorInspectorPlugin |
||||
Method |
✔️ |
✔️ |
||
EditorPlugin |
||||
Method |
✔️ |
✔️ |
||
Method |
✔️ |
✔️ |
||
EditorSceneFormatImporterFBX |
||||
Tipo renombrado a |
❌ |
❌ |
❌ |
Cambios de comportamiento
In 4.3, some behavior changes have been introduced, which might require you to adjust your project.
Núcleo
Nota
Se modificó la serialización binaria para corregir algunos problemas con la serialización de objetos con scripts y matrices tipificadas (GH-78219). Esto afecta la compatibilidad con la codificación/decodificación de scripts.
Nota
PackedByteArray ahora puede usar una codificación base64 más compacta para el almacenamiento. Sin embargo, esto implica que se rompe la compatibilidad, lo que significa que las versiones anteriores de Godot podrían no poder abrir los recursos guardados por la versión 4.3 (GH-89186).
Para maximizar la compatibilidad, este nuevo formato de almacenamiento solo estará disponible por ahora para recursos y escenas que contengan PackedByteArrays grandes. También se añadirá compatibilidad con este nuevo formato en las actualizaciones de parches para versiones anteriores de Godot. Una vez que todas las versiones compatibles de Godot puedan leer el nuevo formato, retiraremos gradualmente las medidas de compatibilidad y todos los recursos y escenas utilizarán el nuevo formato de almacenamiento.
Nota
En C#, se corrigió la implementación de Transform3D.InterpolateWith para usar el orden correcto de operaciones, aplicando la rotación antes de la escala (GH-89843).
Nota
En C#, se corrigió la implementación de Aabb.GetSupport para devolver correctamente el vector de soporte (GH-88919).
Nota
En C#, la implementación de ToString de los tipos Variant ahora utiliza de manera predeterminada InvariantCulture (GH-89547), lo que significa que Vector2(1.2, 3.4) se formatea utilizando . como separador decimal independientemente del idioma del sistema operativo en el que se ejecuta el programa.
Animación
Nota
AnimationMixer reemplazó su modo de Captura con una nueva función de Captura que funciona mucho mejor que la anterior. Esta reemplaza la caché existente (GH-86715).
Nota
AnimationNode cuenta con un proceso rediseñado para recuperar la información temporal semántica. Esto garantiza que el comportamiento temporal funcione correctamente, pero modifica el comportamiento de fusión. Los implementadores del método virtual _process deben tener en cuenta que este método está obsoleto y será reemplazado por uno nuevo en el futuro (GH-87171).
More information about the changes to Animation can be found in the Migrating Animations from Godot 4.0 to 4.3 article.
Nodos GUI
Nota
El color del contorno de la fuente predeterminada se cambió de blanco a negro (GH-54641).
Nota
La propiedad auto_translate ha quedado obsoleta y se ha sustituido por la propiedad auto_translate_mode, que ahora se encuentra en Node (GH-87530). El valor predeterminado de auto_translate_mode es AUTO_TRANSLATE_INHERIT, lo que significa que los nodos heredan el valor de auto_translate_mode de su padre. Esto significa que los nodos existentes con la propiedad auto_translate establecida en true ya no podrán traducirse si son hijos de un nodo con la propiedad auto_translate establecida en false.
Multijugador
Nota
Se modificó el protocolo de almacenamiento en caché SceneMultiplayer para enviar la ID recibida en lugar de la ruta del nodo al enviar un paquete de confirmación de eliminación de nodo (GH-90027).
Este es un cambio radical que afecta al protocolo multijugador de alto nivel, lo que lo hace incompatible con versiones anteriores de Godot. Actualice tanto su servidor como su cliente a Godot 4.3 para gestionar este cambio correctamente.
Ten en cuenta que las funciones multijugador de alto nivel solo son compatibles con servidores y clientes que usen la misma versión de Godot. Se recomienda implementar algún tipo de verificación de versiones.
Renderizado
Nota
Los decals ahora convierten el color del modulate de sRGB a color lineal, al igual que el resto de las entradas, para asegurar una mezcla adecuada (GH-89849). Los proyectos existentes que usaban la propiedad modulate del decal notarán un cambio en su apariencia visual.
Nota
Ahora se implementó la técnica de Reverse Z en el depth buffer. Esto puede romper la compatibilidad con algunos shaders. Léase el artículo Introducción a Reverse Z (Lo siento por romper tu shader) para más información y guía sobre cómo solucionar los casos más comunes.
TileMap
Android
Nota
Ya no se solicitan automáticamente los permisos en Android, porque eso va en contra de las buenas prácticas recomendadas (GH-87080). Usa el método request_permission de OS y la señal on_request_permissions_result de MainLoop para solicitar permisos y esperar la respuesta del usuario.