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...
Applicare i principi orientati agli oggetti in Godot
Il motore offre due modi principali per creare oggetti riutilizzabili: script e scene. Nessuno di questi tecnicamente definisce le classi interne.
Nonostante ciò, molte delle migliori pratiche nell'uso di Godot prevedono di applicare i principi della programmazione orientata agli oggetti agli script e alle scene che compongono il gioco. Ecco perché è utile capire come possiamo considerarli come classi.
Questa guida spiega brevemente come funzionano gli script e le scene nel nucleo del motore per aiutare a comprendere come funzionano internamente.
Come gli script funzionano nel motore
Il motore fornisce varie classi integrate come Node. È possibile estenderle per creare tipi derivati tramite uno script.
Questi script non sono tecnicamente classi. Bensì, sono risorse che indicano al motore una sequenza di inizializzazioni da effettuare su una delle classi integrate nel motore.
Le classi interne di Godot hanno metodi che registrano i dati di una classe con un ClassDB. Questo database fornisce accesso in fase di esecuzione alle informazioni sulla classe. ClassDB contiene informazioni sulle classi come:
Proprietà.
Metodi.
Costanti.
Segnali.
Questo ClassDB è cosa gli oggetti verificano quando eseguono un'operazione come l'accesso a una proprietà o la chiamata a un metodo. Verifica i record del database, e anche i record dei tipi base dell'oggetto, per verificare se l'oggetto supporta l'operazione.
Associando uno Script al proprio oggetto si estendono i metodi, le proprietà e i segnali disponibili dal ClassDB.
Nota
Anche gli script che non usano la parola chiave extends ereditano implicitamente dalla classe base del motore, RefCounted. Pertanto, è possibile istanziare script senza la parola chiave extends da codice. Tuttavia, poiché estendono RefCounted, non è possibile allegarli a un Node.
Scene
Il comportamento delle scene presenta molte somiglianze con le classi, quindi può aver senso immaginare una scena come una classe. Le scene sono gruppi di nodi riutilizzabili, istanziabili ed ereditabili. Creare una scena è simile ad avere uno script che crea nodi e li aggiunge come figli tramite add_child().
Spesso associamo una scena a un nodo radice con script, che utilizza i nodi della scena. In questo modo, lo script estende la scena aggiungendo comportamenti tramite codice imperativo.
Il contenuto di una scena aiuta a definire:
Quali nodi sono disponibili per lo script.
Come sono organizzati.
Come sono inizializzati.
Quali connessioni di segnali hanno tra loro.
Perché tutto questo è importante per organizzare le scene? Perché le istanze delle scene sono oggetti. Di conseguenza, molti principi orientati agli oggetti che si applicano al codice scritto si applicano anche alle scene: responsabilità singola, incapsulamento e altri.
La scena è sempre un'estensione dello script allegato al suo nodo radice, quindi la si può interpretare come parte di una classe.
La maggior parte delle tecniche spiegate in questa serie di migliori pratiche si basano su questo concetto.