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.
Checking the stable version of the documentation...
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 |
❌ |
❌ |
❌ |
|
Metodo |
❌ |
❌ |
❌ |
|
Metodo |
❌ |
❌ |
❌ |
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 |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
AnimationMixer |
||||
Il metodo |
✔️ |
❌ |
❌ |
|
Skeleton3D |
||||
Il metodo |
✔️ |
❌ |
✔️ |
|
Il segnale |
❌ |
❌ |
❌ |
|
BoneAttachment3D |
||||
Il metodo |
✔️ |
✔️ |
✔️ |
Nodi GUI
Cambiamento |
Compatibili con GDScript |
Compatibili con eseguibili C# |
Compatibili con codice sorgente C# |
Introdotti |
|---|---|---|---|---|
AcceptDialog |
||||
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
Fisica
Cambiamento |
Compatibili con GDScript |
Compatibili con eseguibili C# |
Compatibili con codice sorgente C# |
Introdotti |
|---|---|---|---|---|
PhysicsShapeQueryParameters3D |
||||
La proprietà |
❌ |
❌ |
❌ |
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 |
✔️ |
❌ |
❌ |
|
Il campo di enumerazione |
✔️ |
❌ |
❌ |
|
Il campo di enumerazione |
✔️ |
❌ |
❌ |
|
Il campo di enumerazione |
✔️ |
❌ |
❌ |
|
Il campo di enumerazione |
✔️ |
❌ |
❌ |
|
Il campo di enumerazione |
✔️ |
❌ |
❌ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
RenderingServer |
||||
Il metodo |
✔️ |
✔️ |
✔️ |
|
RenderSceneBuffersRD |
||||
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
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 |
✔️ |
✔️ |
✔️ |
|
RichTextLabel |
||||
Il metodo |
✔️ |
✔️ |
✔️ |
|
TextServer |
||||
Il metodo |
✔️ |
✔️ |
✔️ |
|
TextServerExtension |
||||
Il metodo |
❌ |
❌ |
❌ |
Audio
Cambiamento |
Compatibili con GDScript |
Compatibili con eseguibili C# |
Compatibili con codice sorgente C# |
Introdotti |
|---|---|---|---|---|
AudioStreamPlaybackPolyphonic |
||||
Il metodo |
✔️ |
✔️ |
✔️ |
TileMap
Cambiamento |
Compatibili con GDScript |
Compatibili con eseguibili C# |
Compatibili con codice sorgente C# |
Introdotti |
|---|---|---|---|---|
TileData |
||||
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
XR
Cambiamento |
Compatibili con GDScript |
Compatibili con eseguibili C# |
Compatibili con codice sorgente C# |
Introdotti |
|---|---|---|---|---|
WebXRInterface |
||||
Il metodo |
✔️ |
❌ |
✔️ |
|
XRServer |
||||
Il metodo |
✔️ |
❌ |
❌ |
Estensioni per l'editor
Cambiamento |
Compatibili con GDScript |
Compatibili con eseguibili C# |
Compatibili con codice sorgente C# |
Introdotti |
|---|---|---|---|---|
EditorInspectorPlugin |
||||
Il metodo |
✔️ |
✔️ |
✔️ |
|
EditorPlugin |
||||
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
EditorSceneFormatImporterFBX |
||||
Tipo rinominato in |
❌ |
❌ |
❌ |
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
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.