Upgrading from Godot 4.2 to 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.
Breaking changes
Se você estiver migrando da versão 4.2 para a 4.3, as alterações significativas listadas aqui podem afetá-lo. As alterações são agrupadas por áreas/sistemas.
Este artigo indica se cada alteração drástica afeta o GDScript e se a alteração drástica do C# é compatível com o binário ou compatível com o código-fonte:
Compatível com binários - Os binários existentes serão carregados e executados com sucesso sem recompilação, e o comportamento em tempo de execução não mudará.
Compatível com a fonte - O código fonte será compilado com sucesso, sem alterações, ao atualizar o Godot.
GDExtension
Change |
GDScript Compatible |
Compatível com C# Binário |
Compatível com fonte C# |
Introduced |
|---|---|---|---|---|
GDExtension |
||||
Método |
❌ |
❌ |
❌ |
|
Método |
❌ |
❌ |
❌ |
|
Método |
❌ |
❌ |
❌ |
Como era basicamente impossível usar esses métodos de forma útil, eles foram removidos. Use GDExtensionManager::load_extension e GDExtensionManager::unload_extension para carregar e descarregar corretamente uma GDExtension.
Animação
Change |
GDScript Compatible |
Compatível com C# Binário |
Compatível com fonte C# |
Introduced |
|---|---|---|---|---|
Animation |
||||
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
AnimationMixer |
||||
Alterado o tipo do parâmetro |
✔️ |
❌ |
❌ |
|
Skeleton3D |
||||
Alterado o tipo de retorno do método |
✔️ |
❌ |
✔️ |
|
Sinal |
❌ |
❌ |
❌ |
|
BoneAttachment3D |
||||
Método |
✔️ |
✔️ |
✔️ |
GUI nodes
Change |
GDScript Compatible |
Compatível com C# Binário |
Compatível com fonte C# |
Introduced |
|---|---|---|---|---|
AcceptDialog |
||||
Alterado o tipo do parâmetro |
✔️ |
✔️ |
✔️ |
|
Alterado o tipo do parâmetro |
✔️ |
✔️ |
✔️ |
Física
Change |
GDScript Compatible |
Compatível com C# Binário |
Compatível com fonte C# |
Introduced |
|---|---|---|---|---|
PhysicsShapeQueryParameters3D |
||||
Alterado o tipo da propriedade |
❌ |
❌ |
❌ |
Nota
Em C#, a enumeração PhysicsServer3D.G6DofJointAxisFlag quebra a compatibilidade devido à forma como o gerador de vinculações detecta o prefixo da enumeração. Novos membros foram adicionados em GH-89851 à enumeração, o que fez com que os membros da enumeração fossem renomeados.
Renderização
Change |
GDScript Compatible |
Compatível com C# Binário |
Compatível com fonte C# |
Introduced |
|---|---|---|---|---|
RenderingDevice |
||||
O campo Enum |
✔️ |
❌ |
❌ |
|
O campo Enum |
✔️ |
❌ |
❌ |
|
O campo Enum |
✔️ |
❌ |
❌ |
|
O campo Enum |
✔️ |
❌ |
❌ |
|
O campo Enum |
✔️ |
❌ |
❌ |
|
O campo Enum |
✔️ |
❌ |
❌ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Removido parâmetro |
✔️ |
✔️ |
✔️ |
|
Removido parâmetro |
✔️ |
✔️ |
✔️ |
|
Removido parâmetro |
✔️ |
✔️ |
✔️ |
|
Removido parâmetro |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Removido parâmetro |
✔️ |
✔️ |
✔️ |
|
Removido parâmetro |
✔️ |
✔️ |
✔️ |
|
Removido parâmetro |
✔️ |
✔️ |
✔️ |
|
RenderingServer |
||||
Method |
✔️ |
✔️ |
✔️ |
|
RenderSceneBuffersRD |
||||
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
Nota
Embora os valores dos campos enum em RenderingDevice.InitialAction e RenderingDevice.FinalAction tenham mudado, o único método que os consumia (draw_list_begin) adicionou um método de compatibilidade que suporta os valores antigos. Portanto, na prática, isso não quebra a compatibilidade.
Nota
Em C#, o enum``RenderingDevice.DriverResource`` quebra a compatibilidade devido à forma como o gerador de vinculações detecta o prefixo do enum. Novos membros foram adicionados em GH-83452 ào enum, o que fez com que os membros dele fossem renomeados.
Text
Change |
GDScript Compatible |
Compatível com C# Binário |
Compatível com fonte C# |
Introduced |
|---|---|---|---|---|
Fonte |
||||
Method |
✔️ |
✔️ |
✔️ |
|
RichTextLabel |
||||
Method |
✔️ |
✔️ |
✔️ |
|
TextServer |
||||
Method |
✔️ |
✔️ |
✔️ |
|
TextServerExtension |
||||
Method |
❌ |
❌ |
❌ |
Áudio
Change |
GDScript Compatible |
Compatível com C# Binário |
Compatível com fonte C# |
Introduced |
|---|---|---|---|---|
AudioStreamPlaybackPolyphonic |
||||
Method |
✔️ |
✔️ |
✔️ |
TileMap
Change |
GDScript Compatible |
Compatível com C# Binário |
Compatível com fonte C# |
Introduced |
|---|---|---|---|---|
TileData |
||||
Adicionado novos parâmetros opcionais |
✔️ |
✔️ |
✔️ |
|
Adicionado novos parâmetros opcionais |
✔️ |
✔️ |
✔️ |
XR
Change |
GDScript Compatible |
Compatível com C# Binário |
Compatível com fonte C# |
Introduced |
|---|---|---|---|---|
WebXRInterface |
||||
Alterado o tipo de retorno do método |
✔️ |
❌ |
✔️ |
|
XRServer |
||||
Alterado o tipo de retorno do método |
✔️ |
❌ |
❌ |
Plugins do editor
Change |
GDScript Compatible |
Compatível com C# Binário |
Compatível com fonte C# |
Introduced |
|---|---|---|---|---|
EditorInspectorPlugin |
||||
Method |
✔️ |
✔️ |
✔️ |
|
EditorPlugin |
||||
Method |
✔️ |
✔️ |
✔️ |
|
Method |
✔️ |
✔️ |
✔️ |
|
EditorSceneFormatImporterFBX |
||||
Tipo renomeado para |
❌ |
❌ |
❌ |
Behavior changes
In 4.3, some behavior changes have been introduced, which might require you to adjust your project.
Componentes Principais
Nota
A serialização binária foi modificada para corrigir alguns problemas com a serialização de objetos com script e arrays tipados (GH-78219). Isso quebra a compatibilidade com a codificação/decodificação de script.
Nota
O PackedByteArray agora pode usar uma codificação base64 mais compacta para armazenamento. A desvantagem é que isso quebra a compatibilidade, o que significa que versões mais antigas do Godot podem não conseguir abrir recursos salvos pela versão 4.3 (GH-89186).
Para maximizar a compatibilidade, este novo formato de armazenamento será habilitado somente para recursos e cenas que contenham PackedByteArrays grandes, por enquanto. O suporte para este novo formato também será adicionado em atualizações de patch para versões mais antigas do Godot. Assim que todas as versões suportadas do Godot puderem ler o novo formato, descontinuaremos gradualmente as medidas de compatibilidade e faremos com que todos os recursos e cenas usem o novo formato de armazenamento.
Nota
Em C#, a implementação Transform3D.InterpolateWith foi corrigida para usar a ordem correta das operações, aplicando a rotação antes da escala (GH-89843).
Nota
Em C#, a implementação Aabb.GetSupport foi corrigida para retornar corretamente o vetor de suporte (GH-88919).
Nota
Em C#, a implementação ToString dos tipos Variant agora usa por padrão InvariantCulture (GH-89547), o que significa que Vector2(1.2, 3.4) é formatado usando . como separador decimal, independentemente do idioma do sistema operacional no qual o programa está sendo executado.
Animação
Nota
AnimationMixer substituiu seu modo de captura (Capture) por um novo recurso de captura que funciona muito melhor que o antigo, substituindo o cache existente (GH-86715).
Nota
AnimationNode possui um processo reformulado para recuperar as informações de tempo semântico. Isso garante que o comportamento relacionado ao tempo funcione conforme o esperado, mas altera o comportamento de mesclagem. Os implementadores do método virtual _process também devem observar que este método está obsoleto e será substituído por um novo no 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.
GUI nodes
Nota
A cor do contorno da fonte padrão foi alterada de branco para preto (GH-54641).
Nota
A propriedade auto_translate foi descontinuada em favor da propriedade auto_translate_mode, que agora está em Node (GH-87530). O valor padrão para auto_translate_mode é AUTO_TRANSLATE_INHERIT, o que significa que os nós herdam o valor auto_translate_mode de seus nós pais. Isso significa que nós existentes com a propriedade auto_translate definida como true não poderão mais ser traduzidos se forem filhos de um nó com a propriedade auto_translate definida como false.
Multiplayer
Nota
O protocolo de cache SceneMultiplayer foi alterado para enviar o ID recebido em vez do caminho do nó ao enviar um pacote de confirmação de remoção de nó (GH-90027).
Esta é uma mudança drástica no protocolo multijogador de alto nível, tornando-o incompatível com versões anteriores do Godot. Atualize suas versões de servidor e cliente para o Godot 4.3 para lidar com essa mudança sem problemas.
Observe que os recursos multijogador de alto nível devem ser compatíveis somente com o servidor e o cliente que usam a mesma versão do Godot. Recomenda-se implementar algum tipo de verificação de versão.
Renderização
Nota
Os decalques agora convertem a cor modulada de uma cor sRGB para uma cor linear, como todas as outras entradas, para garantir uma mistura adequada (GH-89849). Projetos existentes que usavam a propriedade de modulação do decalque notarão uma mudança em seus visuais.
Nota
A técnica de buffer de profundidade Z reverso agora está implementada. Isso pode quebrar a compatibilidade para alguns shaders. Leia o artigo Introducing Reverse Z (AKA I'm sorry for breaking your shader) para mais informações e orientações sobre como corrigir cenários comuns.
TileMap
Android
Nota
As permissões do Android não são mais solicitadas automaticamente, pois isso vai contra as práticas recomendadas (GH-87080). Use o método request_permission em OS e o sinal on_request_permissions_result em MainLoop para solicitar permissões e aguardar a resposta do usuário.