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.

Quando e come evitare di utilizzare i nodi per tutto

I nodi sono economici da produrre, ma anche loro hanno i loro limiti. Un progetto può avere decine di migliaia di nodi che svolgono tutti delle attività. Tuttavia, più complesso è il loro comportamento, maggiore è il carico che ciascuno di essi aggiunge alle prestazioni del progetto.

Godot fornisce oggetti più leggeri per la creazione di API utilizzate dai nodi. Ciò è da tenere a mente quando si progetta come sviluppare le funzionalità del proprio progetto.

  1. Object: L'oggetto leggero supremo, l'originale Object, deve gestire manualmente la propria memoria. Detto questo, non è troppo difficile creare strutture dati personalizzate, anche strutture a nodi, che siano anche più leggere della classe Node.

    • Esempio: Consultare il nodo Tree. Supporta un elevato livello di personalizzazione per una tabella di contenuti con un numero arbitrario di righe e colonne. I dati che utilizza per generare la visualizzazione sono in realtà un albero di oggetti TreeItem.

    • Vantaggi: Semplificare la propria API in oggetti, con ambito ridotto, contribuisce a migliorarne l'accessibilità e a ridurre i tempi di iterazione. Anziché lavorare con l'intera libreria di Node, si crea un insieme abbreviato di oggetti da cui un nodo può generare e gestire i sotto-nodi appropriati.

    Nota

    Bisogna fare attenzione quando li si gestisce. È possibile memorizzare un oggetto in una variabile, ma questi riferimenti possono diventare non validi, senza preavviso. Ad esempio, se il creatore dell'oggetto decide di eliminarlo all'improvviso, ciò genererebbe uno stato di errore al prossimo accesso.

  2. RefCounted: Solo un po' più complesso di Object. Registra i riferimenti a se stesso, cancellando la memoria caricata solo quando non esistono ulteriori riferimenti a se stesso. Sono utili nella maggior parte dei casi in cui sono necessari dati in una classe personalizzata.

    • Esempio: Consultare l'oggetto FileAccess. Funziona esattamente come un normale Object, solo che non è necessario eliminarlo manualmente.

    • Vantaggi: uguali a Object.

  3. Resource: Solamente un po' più complesso di RefCounted. Hanno la capacità innata di serializzare/deserializzare (ovvero salvare e caricare) le proprietà dei loro oggetti da/a file di risorse di Godot.

    • Esempio: Script, PackedScene (per i file di scena) e altri tipi come ciascuna delle classi AudioEffect. Ognuna di queste si può salvare e caricare, quindi si estendono da Resource.

    • Vantaggi: Molto è già stato detto sui vantaggi di Resource rispetto ai metodi tradizionali di archiviazione dati. Eppure, nel contesto dell'utilizzo di risorse rispetto a nodi, il loro vantaggio principale è la loro compatibilità con l'Ispettore. Pur essendo quasi leggeri come Object/RefCounted, possono comunque visualizzare ed esportare proprietà nell'Ispettore. Questo consente loro di svolgere una funzione simile a quella dei sotto-nodi, in termini di usabilità, nonché di migliorare le prestazioni se si prevede di avere molte di queste risorse/nodi nelle proprie scene.