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.4 a Godot 4.5
Per la maggior parte dei giochi e delle applicazioni creati in 4.4, dovrebbe essere relativamente sicuro migrare a 4.5. 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.4 alla 4.5, le modifiche incompatibili elencate qui potrebbero interessarti. Le modifiche sono raggruppate per aree/sistemi.
Avvertimento
Per supportare new Google Play requirements, Android ora richiede di utilizzare .NET 9 quando si esportano progetti C# su Android; altre piattaforme continuano a utilizzare .NET 8 come versione minima richiesta, ma le versioni più recenti sono supportate e consigliate.
Se si utilizza C# nel proprio progetto e si desidera esportarlo su Android, sarà necessario aggiornare il progetto a .NET 9 (Consultare Upgrading to a new .NET version per le istruzioni).
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 doverli ricompilare, 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.
Fondamentali
Cambiamento |
Compatibili con GDScript |
Compatibili con eseguibili C# |
Compatibili con codice sorgente C# |
Introdotti |
|---|---|---|---|---|
JSONRPC |
||||
Il metodo |
❌ |
❌ |
❌ |
|
Node |
||||
Il metodo |
❌ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
Renderer
Cambiamento |
Compatibili con GDScript |
Compatibili con eseguibili C# |
Compatibili con codice sorgente C# |
Introdotti |
|---|---|---|---|---|
DisplayServer |
||||
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
RenderingDevice |
||||
Il metodo |
✔️ |
✔️ |
✔️ |
|
RenderingServer |
||||
Metodo |
❌ |
✔️ |
✔️ |
|
Metodo |
❌ |
✔️ |
✔️ |
Nota
In C#, l'enumerazione RenderingDevice.Features interrompe la compatibilità a causa del modo in cui il generatore di binding rileva il prefisso dell'enumerazione. In GH-103941 sono stati aggiunti nuovi membri all'enum, causando il membro Address a essere rinominato in BufferDeviceAddress.
GLTF
Cambiamento |
Compatibili con GDScript |
Compatibili con eseguibili C# |
Compatibili con codice sorgente C# |
Introdotti |
|---|---|---|---|---|
GLTFAccessor |
||||
La proprietà |
✔️ |
❌ |
❌ |
|
La proprietà |
✔️ |
❌ |
❌ |
|
La proprietà |
✔️ |
❌ |
❌ |
|
La proprietà |
✔️ |
❌ |
❌ |
|
La proprietà |
✔️ |
❌ |
❌ |
|
La proprietà |
✔️ |
❌ |
❌ |
|
La proprietà |
✔️ |
❌ |
❌ |
|
GLTFBufferView |
||||
La proprietà |
✔️ |
❌ |
❌ |
|
La proprietà |
✔️ |
❌ |
❌ |
|
La proprietà |
✔️ |
❌ |
❌ |
Nota
A causa di cambiamenti dei metadati di tipo, i binding C# hanno cambiato il tipo da int (32 byte) a long (64 byte).
Testo
Cambiamento |
Compatibili con GDScript |
Compatibili con eseguibili C# |
Compatibili con codice sorgente C# |
Introdotti |
|---|---|---|---|---|
CanvasItem |
||||
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Font |
||||
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
RichTextLabel |
||||
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
TextLine |
||||
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
TextParagraph |
||||
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
TextServer |
||||
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
TreeItem |
||||
Il metodo |
✔️ |
✔️ |
✔️ |
|
TextServerExtension |
||||
Il metodo |
❌ |
❌ |
❌ |
|
Il metodo |
❌ |
❌ |
❌ |
|
Il metodo |
❌ |
❌ |
❌ |
|
Il metodo |
❌ |
❌ |
❌ |
XR
Cambiamento |
Compatibili con GDScript |
Compatibili con eseguibili C# |
Compatibili con codice sorgente C# |
Introdotti |
|---|---|---|---|---|
OpenXRAPIExtension |
||||
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
Il metodo |
✔️ |
✔️ |
✔️ |
|
OpenXRBindingModifierEditor |
||||
Il tipo |
❌ |
❌ |
❌ |
|
OpenXRInteractionProfileEditor |
||||
Il tipo |
❌ |
❌ |
❌ |
|
OpenXRInteractionProfileEditorBase |
||||
Il tipo |
❌ |
❌ |
❌ |
Nota
Le classi OpenXRBindingModifierEditor, OpenXRInteractionProfileEditor e OpenXRInteractionProfileEditorBase sono disponibili solo nell'editor. Il loro utilizzo al di fuori dell'editor causerà un errore di compilazione.
In C#, questo significa che i tipi sono stati spostati dall'assembly GodotSharp all'assembly GodotSharpEditor. Assicurarsi di racchiudere il codice che utilizza questi tipi in un blocco #if TOOLS per evitare che siano inclusi in un gioco esportato.
Questo cambiamento è stata retroportato anche alla versione 4.4.1.
Estensioni per l'editor
Cambiamento |
Compatibili con GDScript |
Compatibili con eseguibili C# |
Compatibili con codice sorgente C# |
Introdotti |
|---|---|---|---|---|
EditorExportPlatform |
||||
Il metodo |
✔️ |
✔️ |
✔️ |
|
EditorUndoRedoManager |
||||
Il metodo |
✔️ |
✔️ |
✔️ |
|
EditorExportPlatformExtension |
||||
Il metodo |
✔️ |
❌ |
❌ |
Cambiamenti di comportamento
Nella versione 4.5 sono state introdotte alcune modifiche comportamentali che potrebbero richiedere di adattare i propri progetti.
TileMapLayer
TileMapLayer.get_coords_for_body_rid() restituirà valori diversi nella in 4.5 rispetto a 4.4, poiché la suddivisione in blocchi fisica (physics chunking) di TileMapLayer è abilitata come predefinito. Valori più alti di TileMapLayer.physics_quadrant_size renderanno questa funzione meno precisa. Per ottenere le coordinate esatte di una cella come nella versione 4.4 e precedenti, è necessario impostare TileMapLayer.physics_quadrant_size su 1, il che disabilita la suddivisione fisica.
Importazione di modelli 3D
È stata apportata una correzione agli importatori di modelli 3D per gestire correttamente i nodi (esclusi i giunti) dentro una gerarchia di uno scheletro (GH-104184). Per preservare la compatibilità, il comportamento predefinito è quello di importare i file esistenti con lo stesso comportamento di prima (GH-107352). I nuovi file .gltf, .glb, .blend e .fbx (senza un file .import corrispondente) saranno importati con il nuovo comportamento. Tuttavia, per i file esistenti, se si desidera utilizzare il nuovo comportamento, è necessario cambiare l'opzione "Naming Version" in basso al pannello di importazione:
Fondamentali
Nota
Resource.duplicate(true) (che effettua una duplicazione profonda) ora duplica solo le risorse interne al file di risorse su cui viene chiamato. Nella versione 4.4, invece, duplicava tutto, comprese le risorse esterne. Se si stava effettuando una duplicazione profonda di una risorsa che conteneva riferimenti ad altre risorse esterne, queste ultime non vengono più duplicate. È necessario chiamare Resource.duplicate_deep(DEEP_DUPLICATE_ALL) per mantenere il comportamento precedente.
Nota
ProjectSettings.add_property_info() ora stampa un avviso quando il parametro dizionario ha chiavi mancanti o chiavi non valide. Ancora più importante, ora emetterà un avviso quando viene passata una chiave usage, poiché questa chiave non viene utilizzata. Questo accadeva anche prima della versione 4.5, ma era ignorato silenziosamente. Come promemoria, per impostare correttamente le informazioni sull'uso delle proprietà, è necessario utilizzare ProjectSettings.set_as_basic(), ProjectSettings.set_restart_if_changed() oppure ProjectSettings.set_as_internal().
Nota
In C#, StringExtensions.PathJoin ora evita di aggiungere un separatore di percorso in più quando la stringa originale è vuota o quando il percorso aggiunto inizia con un separatore di percorso (GH-105281).
Nota
In C#, StringExtensions.GetExtension ora restituisce una stringa vuota anziché la stringa originale quando la stringa originale non contiene un'estensione (GH-108041).
Nota
In C#, il costruttore Quaternion(Vector3, Vector3) ora crea correttamente un quaternione che rappresenta l'arco più breve tra i due vettori di input. In passato, restituiva valori errati per alcuni input (GH-107618).
Fisica
Nota
Quando il motore di fisica 3D è impostato su Jolt Physics, saranno sempre riportate le sovrapposizioni tra Area3D e i corpi statici, poiché l'impostazione del progetto physics/jolt_physics_3d/simulation/areas_detect_static_bodies è stata rimossa (GH-105746). Se si desidera comunque ignorare tali sovrapposizioni, sarà necessario modificare la maschera di collisione o gli strati dell'Area3D o del corpo statico.
Testo
Nota
In GDScript, le chiamate alle funzioni RichTextLabel::add_image e RichTextLabel::update_image continueranno a funzionare, ma l'argomento size_in_percent sarà ora utilizzato come valore per width_in_percent e height_in_percent, che sarà predefinito su false (GH-107347). Per ripristinare il comportamento precedente, è possibile impostare esplicitamente height_in_percent sullo stesso valore passato in size_in_percent.