Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Passare da Godot 4.2 a Godot 4.3

Per la maggior parte dei giochi e delle applicazioni creati in 4.2, dovrebbe essere relativamente sicuro migrare a 4.3. Questa pagina intende illustrare tutti gli aspetti a cui prestare attenzione durante la migrazione del proprio progetto.

Modifiche incompatibili

Se stai migrando dalla versione 4.2 alla 4.3, le modifiche incompatibili elencate qui potrebbero interessarti. Le modifiche sono raggruppate per aree/sistemi.

Questo articolo indica se ogni modifica incompatibile influisce su GDScript e se una modifica incompatibile in C# è compatibile con il binario o compatibile con il codice sorgente:

  • Compatibile con gli eseguibili - Gli eseguibili esistenti saranno caricati ed eseguiti correttamente senza necessità di ricompilazione e il comportamento in fase di esecuzione non cambierà.

  • Compatibile con il codice sorgente - Il codice sorgente sarà compilato correttamente senza cambiamenti all'aggiornamento di Godot.

GDExtension

Cambiamento

Compatibili con GDScript

Compatibili con eseguibili C#

Compatibili con codice sorgente C#

Introdotti

GDExtension

Metodo close_library rimosso

GH-88418

Metodo initialize_library rimosso

GH-88418

Metodo open_library rimosso

GH-88418

Poiché era praticamente impossibile utilizzare questi metodi in modo utile, essi sono stati rimossi. Utilizzare invece GDExtensionManager::load_extension e GDExtensionManager::unload_extension per caricare e scaricare correttamente una GDExtension.

Animazione

Cambiamento

Compatibili con GDScript

Compatibili con eseguibili C#

Compatibili con codice sorgente C#

Introdotti

Animation

Il metodo position_track_interpolate aggiunge un nuovo parametro facoltativo backward

✔️

✔️

✔️

GH-86629

Il metodo rotation_track_interpolate aggiunge un nuovo parametro facoltativo backward

✔️

✔️

✔️

GH-86629

Il metodo scale_track_interpolate aggiunge un nuovo parametro facoltativo backward

✔️

✔️

✔️

GH-86629

Il metodo blend_shape_track_interpolate aggiunge un nuovo parametro facoltativo backward

✔️

✔️

✔️

GH-86629

Il metodo value_track_interpolate aggiunge un nuovo parametro facoltativo backward

✔️

✔️

✔️

GH-86629

Il metodo track_find_key aggiunge un nuovo parametro facoltativo limit

✔️

✔️

✔️

GH-86661

Il metodo track_find_key aggiunge un nuovo parametro facoltativo backward

✔️

✔️

✔️

GH-92861

AnimationMixer

Il metodo _post_process_key_value cambia il tipo del parametro object da Object a uint64

✔️

GH-86687

Skeleton3D

Il metodo add_bone cambia il tipo restituito da void a int32

✔️

✔️

GH-88791

Il segnale on_bone_pose_update è stato sostituito da on_skeleton_update

GH-90575

BoneAttachment3D

Il metodo on_bone_pose_update è stato sostituito da on_skeleton_update

✔️

✔️

✔️

GH-90575

Nodi GUI

Cambiamento

Compatibili con GDScript

Compatibili con eseguibili C#

Compatibili con codice sorgente C#

Introdotti

AcceptDialog

Il metodo register_text_type cambia il tipo del parametro line_edit da Control a LineEdit

✔️

✔️

✔️

GH-89419

Il metodo remove_button cambia il tipo del parametro button da Control a Button

✔️

✔️

✔️

GH-89419

Fisica

Cambiamento

Compatibili con GDScript

Compatibili con eseguibili C#

Compatibili con codice sorgente C#

Introdotti

PhysicsShapeQueryParameters3D

La proprietà motion cambia tipo da Vector2 a Vector3

GH-85393

Nota

In C#, l'enumerazione PhysicsServer3D.G6DofJointAxisFlag interrompe la compatibilità a causa del modo in cui il generatore di binding rileva il prefisso dell'enum. In GH-89851 sono stati aggiunti nuovi membri all'enumerazione, causandone la ridenominazione.

Renderer

Cambiamento

Compatibili con GDScript

Compatibili con eseguibili C#

Compatibili con codice sorgente C#

Introdotti

RenderingDevice

Il campo di enumerazione FinalAction.FINAL_ACTION_CONTINUE cambia il suo valore da 2 a 0

✔️

GH-84976

Il campo di enumerazione InitialAction.INITIAL_ACTION_CLEAR cambia il suo valore da 0 a 1

✔️

GH-84976

Il campo di enumerazione InitialAction.INITIAL_ACTION_CLEAR_REGION_CONTINUE cambia il suo valore da 2 a 1

✔️

GH-84976

Il campo di enumerazione InitialAction.INITIAL_ACTION_CONTINUE cambia il suo valore da 5 a 0

✔️

GH-84976

Il campo di enumerazione InitialAction.INITIAL_ACTION_DROP cambia il suo valore da 4 a 2

✔️

GH-84976

Il campo di enumerazione InitialAction.INITIAL_ACTION_KEEP cambia il suo valore da 3 a 0

✔️

GH-84976

Il metodo buffer_clear rimuove il parametro post_barrier

✔️

✔️

✔️

GH-84976

Il metodo buffer_update rimuove il parametro post_barrier

✔️

✔️

✔️

GH-84976

Il metodo compute_list_begin rimuove il parametro allow_draw_overlap

✔️

✔️

✔️

GH-84976

Il metodo compute_list_end rimuove il parametro post_barrier

✔️

✔️

✔️

GH-84976

Il metodo draw_list_begin rimuove il parametro storage_textures

✔️

✔️

✔️

GH-84976

Il metodo draw_list_end rimuove il parametro post_barrier

✔️

✔️

✔️

GH-84976

Il metodo texture_clear rimuove il parametro post_barrier

✔️

✔️

✔️

GH-84976

Il metodo texture_copy rimuove il parametro post_barrier

✔️

✔️

✔️

GH-84976

Il metodo texture_resolve_multisample rimuove il parametro post_barrier

✔️

✔️

✔️

GH-84976

Il metodo texture_update rimuove il parametro post_barrier

✔️

✔️

✔️

GH-84976

RenderingServer

Il metodo environment_set_fog aggiunge un nuovo parametro facoltativo fog_mode

✔️

✔️

✔️

GH-84792

RenderSceneBuffersRD

Il metodo get_depth_layer aggiunge un nuovo parametro facoltativo msaa

✔️

✔️

✔️

GH-80214

Il metodo get_depth_layer aggiunge un nuovo parametro facoltativo msaa

✔️

✔️

✔️

GH-80214

Il metodo get_velocity_layer aggiunge un nuovo parametro facoltativo msaa

✔️

✔️

✔️

GH-80214

Il metodo get_color_texture aggiunge un nuovo parametro facoltativo msaa

✔️

✔️

✔️

GH-80214

Il metodo get_depth_texture aggiunge un nuovo parametro facoltativo msaa

✔️

✔️

✔️

GH-80214

Il metodo get_velocity_texture aggiunge un nuovo parametro facoltativo msaa

✔️

✔️

✔️

GH-80214

Nota

Sebbene i valori dei campi delle enumerazioni RenderingDevice.InitialAction e RenderingDevice.FinalAction siano cambiati, l'unico metodo che li utilizzava (draw_list_begin) ha aggiunto un metodo di compatibilità che supporta i valori vecchi. Quindi, in pratica, la compatibilità non viene interrotta.

Nota

In C#, l'enumerazione RenderingDevice.DriverResource interrompe la compatibilità a causa del modo in cui il generatore di binding rileva il prefisso dell'enumerazione. In GH-83452 sono stati aggiunti nuovi membri all'enum, causando la ridenominazione dei membri dell'enum.

Testo

Cambiamento

Compatibili con GDScript

Compatibili con eseguibili C#

Compatibili con codice sorgente C#

Introdotti

Font

Il metodo find_variation aggiunge un nuovo parametro facoltativo baseline_offset

✔️

✔️

✔️

GH-87668

RichTextLabel

Il metodo push_meta aggiunge un nuovo parametro facoltativo underline_mode

✔️

✔️

✔️

GH-89024

TextServer

Il metodo shaped_text_get_word_breaks aggiunge un nuovo parametro facoltativo skip_grapheme_flags

✔️

✔️

✔️

GH-90732

TextServerExtension

Il metodo _shaped_text_get_word_breaks aggiunge un nuovo parametro skip_graphene_flags

GH-90732

Audio

Cambiamento

Compatibili con GDScript

Compatibili con eseguibili C#

Compatibili con codice sorgente C#

Introdotti

AudioStreamPlaybackPolyphonic

Il metodo play_stream aggiunge nuovi parametri facoltativi playback_type e bus

✔️

✔️

✔️

GH-91382

TileMap

Cambiamento

Compatibili con GDScript

Compatibili con eseguibili C#

Compatibili con codice sorgente C#

Introdotti

TileData

Il metodo get_navigation_polygon aggiunge nuovi parametri facoltativi flip_h, flip_v e transpose

✔️

✔️

✔️

GH-84660

Il metodo get_occluder aggiunge nuovi parametri facoltativi flip_h, flip_v e transpose

✔️

✔️

✔️

GH-84660

XR

Cambiamento

Compatibili con GDScript

Compatibili con eseguibili C#

Compatibili con codice sorgente C#

Introdotti

WebXRInterface

Il metodo get_input_source_tracker cambia il tipo restituito da XRPositionalTracker a XRControllerTracker

✔️

✔️

GH-90645

XRServer

Il metodo get_tracker cambia il tipo restituito da XRPositionalTracker a XRTracker

✔️

GH-90645

Estensioni per l'editor

Cambiamento

Compatibili con GDScript

Compatibili con eseguibili C#

Compatibili con codice sorgente C#

Introdotti

EditorInspectorPlugin

Il metodo add_property_editor aggiunge un nuovo parametro facoltativo label

✔️

✔️

✔️

GH-92322

EditorPlugin

Il metodo add_control_to_bottom_panel aggiunge un nuovo parametro facoltativo shortcut

✔️

✔️

✔️

GH-88081

Il metodo add_control_to_dock aggiunge un nuovo parametro facoltativo shortcut

✔️

✔️

✔️

GH-88081

EditorSceneFormatImporterFBX

Tipo rinominato in EditorSceneFormatImporterFBX2GLTF

GH-81746

Cambiamenti di comportamento

Nella versione 4.3 sono state introdotte alcune modifiche comportamentali che potrebbero richiedere di adattare i propri progetti.

Fondamentali

Nota

La serializzazione binaria è stata modificata per risolvere alcuni problemi con la serializzazione di oggetti con script, e array tipizzati (GH-78219). Questo interrompe la compatibilità con la codifica/decodifica degli script.

Nota

PackedByteArray ora può utilizzare una codifica in base64 più compatta per l'archiviazione. Tuttavia, il compromesso è che interrompe la compatibilità, il che significa che le versioni precedenti di Godot potrebbero non essere in grado di aprire le risorse salvate dalla versione 4.3 (GH-89186).

Per massimizzare la compatibilità, per ora questo nuovo formato di archiviazione sarà abilitato solo per risorse e scene che contengono PackedByteArray di grandi dimensioni. Il supporto per questo nuovo formato verrà aggiunto anche negli aggiornamenti patch per le versioni precedenti di Godot. Non appena tutte le versioni di Godot supportate saranno in grado di leggere il nuovo formato, ritireremo gradualmente le misure di compatibilità e faremo in modo che tutte le risorse e le scene utilizzino il nuovo formato di archiviazione.

Nota

In C#, l'implementazione di Transform3D.InterpolateWith è stata corretta per utilizzare l'ordine corretto delle operazioni, applicando la rotazione prima della scala (GH-89843).

Nota

In C#, l'implementazione di Aabb.GetSupport è stata corretta per restituire correttamente il vettore di supporto (GH-88919).

Nota

In C#, l'implementazione di ToString dei tipi Variant ora utilizza InvariantCulture (GH-89547) come predefinito, il che significa che Vector2(1.2, 3.4) è formattato utilizzando . come separatore decimale, a prescindere dalla lingua del sistema operativo su cui è in esecuzione il programma.

Animazione

Nota

AnimationMixer ha sostituito la sua modalità di cattura con una nuova funzionalità di cattura che funziona molto meglio di quella vecchia. Ciò sostituisce la cache esistente (GH-86715).

Nota

AnimationNode ha un procedimento rielaborato per il recupero delle informazioni semantiche sul tempo. Questo garantisce che il comportamento relativo al tempo funzioni come previsto, ma modifica il comportamento di fusione. Chi implementa il metodo virtuale _process deve inoltre tenere presente che questo metodo è ora deprecato e verrà sostituito da uno nuovo in futuro (GH-87171).

Ulteriori informazioni sulle modifiche apportate ad Animation sono disponibili nell'articolo Migrating Animations from Godot 4.0 to 4.3.

Nodi GUI

Nota

Il colore predefinito del contorno dei font è stato cambiato da bianco a nero (GH-54641).

Nota

La proprietà auto_translate è deprecata a favore della proprietà auto_translate_mode, ora presente in Node (GH-87530). Il valore predefinito per auto_translate_mode è AUTO_TRANSLATE_INHERIT, il che significa che i nodi ereditano il valore auto_translate_mode dal nodo genitore. Ciò significa che i nodi esistenti con la proprietà auto_translate impostata su true potrebbero non tradursi più se sono figli di un nodo con la proprietà auto_translate impostata su false.

Multiplayer

Nota

Il protocollo di memorizzazione nella cache di SceneMultiplayer è stato modificato per inviare l'ID ricevuto anziché il percorso del nodo all'invio di un pacchetto di conferma per rimuovere il nodo (GH-90027).

Questo è una modifica incompatibile per il protocollo multigiocatore di alto livello, il che lo rende incompatibile con le precedenti versioni di Godot. Aggiornare la versione sia del server sia del client a Godot 4.3 per gestire questo cambiamento senza problemi.

Si noti che le funzionalità multigiocatore di alto livello sono progettate per essere compatibili solo con server e client che utilizzano la stessa versione di Godot. Si consiglia di implementare un qualche tipo di controllo della versione.

Renderer

Nota

Le decalcomanie ora convertono il colore di modulazione da sRGB a lineare, come tutti gli altri input, per garantire una corretta fusione (GH-89849). I progetti esistenti che utilizzavano la proprietà di modulazione delle decalcomanie noteranno un cambiamento nelle loro visuali.

Nota

È ora implementata la tecnica del buffer di profondità Z inverso. Ciò potrebbe interrompere la compatibilità per alcuni shader. Leggere l'articolo Introducing Reverse Z (AKA I'm sorry for breaking your shader) per ulteriori informazioni e indicazioni su come risolvere gli scenari più comuni.

TileMap

Nota

I livelli di TileMap sono stati spostati su nodi individuali (GH-87379 e GH-89179).

Android

Nota

Le autorizzazioni di Android non sono più richieste automaticamente perché violano le procedure consigliate (GH-87080). Utilizzare il metodo request_permission in OS e il segnale on_request_permissions_result su MainLoop per richiedere le autorizzazioni e attendere la risposta dell'utente.