Istanziare¶
Introduzione¶
Creare una singola scena e aggiungere nodi a questa puó funzionare per piccoli progetti ma, quando il progetto diventa piú grande e complesso, il numero di nodi puó diventare rapidamente ingestibile. Per risolvere questo problema Godot permette che un progetto sia separato in un qualsiasi numero di scene in modo da avere uno strumento che ti aiuti adn organizzare le diverse componenti di un gioco.
In Scene e nodi hai imparato che una scena é una collezione di nodi organizzata in una struttura ad albero, con un singolo nodo come radice.

Puoi creare quante scene vuoi e salvarle su disco. Le scene salvate in questa maniera sono chiamate "Packed Scenes" e hanno estensione .tscn
.

Una volta che una scena é stata salvata puó successivamente essere istanziata all'interno di un'altra scena esattamente come qualunque altro nodo.

Nell'immagine sopra, la Scena B é stata aggiunta alla Scena A come istanza.
Instanziazione per esempi¶
Per capire come funziona l'instanziazione, iniziamo scaricando un progetto di esempio: instancing.zip
.
Decomprimi questo progetto ovunque tu voglia, quindi apri Godot e aggiungilo al Gestore di Progetti utilizzando il bottone 'Importa':

Naviga fino alla cartella in cui hai estratto l'archivio e apri il file project.godot che trovi all'interno, a questo punto il progetto apparirá nella lista dei progetti. Modifica il progetto premendo sul bottone 'Modifica'.
Questo progetto contiene due scene: "Ball.tscn" e "Main.tscn". La scena Ball
usa un RigidBody2D per simulare un comportamento fisicamente corretto, mentre la scena principale contiene un insieme di ostacoli su cul la palla possa collidere (utilizzando StaticBody2D).


Apri la scena Main
e seleziona il nodo radice:

Quello che vogliamo é aggiungere un'istanza della scena Ball
come figlia di Main
, fai click sulla bottone a forma di catena (il testo in sovrimpressione dice "Istanzia un file scena come nodo.") e seleziona il file Ball.tscn
.

La palla sará piazzata nell'angolo in alto a sinistra dell'area di schermo (questa é la posizione (0, 0)
in coordinate sullo schermo). Fai click e trascina la palla in una posizione in alto e centrale della scena:

Premi "Play" e guarda la palla cadere verso il fondo dello schermo:

Istanze multiple¶
Puoi aggiungere quante istanze vuoi in una scena, sia premendo sul bottone "Istanzia" o facendo click sull'istanza della palla e premendo il Ctrl + D (Cmd + D su macOS) per duplicarla:

Esegui la scena di nuovo e tutte le palle cadranno.

Modificare le istanze¶
Apri la scena Palla
, espandi il PhysicsMaterial
cliccando su di esso, ed imposta la proprietà Bounce
su 1
.

Premi ''Play'' e ti renderai conto che tutte quelle sfere instanziate adesso rimbalzano di più. Questo perché le sfere instanziate si basano sulla scena salvata, e le modifiche a quella scena affliggeranno tutte le sue istanze.
You can also adjust individual instances. Set the bounce value back to 0
and then in the Main
scene, select one of the instanced balls. Resources
like PhysicsMaterial
are shared between instances by default, so we need
to make it unique. Click on the tools button in the top-right of the Inspector
dock and select "Make Sub-Resources Unique". Set its Bounce
to 1
and
press "Play".

Nota che compare un bottone "Annulla" in grigio a fianco alla proprietá modificata. Quando questo bottone é presente significa che é stato modificato un valore che va a sovrascrivere il valore della scena salvata. Il valore personalizzato nell'istanza rimane anche se il valore di quella proprietá viene modificato nella scena originale. Premendo il bottone di annulla riporterá il valore a quello salvato nella scena originaria.
Conclusione¶
Creare un'istanza può essere utile quando vuoi creare più copie dello stesso oggetto. C'è anche la possibilità di creare istanze dal codice usando GDScript, vedi Scripting (continuazione).