This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
I componenti (component) consentono di assegnare agli oggetti di gioco (game object) un aspetto specifico e/o funzionalità specifiche. I componenti devono essere contenuti in oggetti di gioco e risentono della posizione, della rotazione e della scala dell’oggetto di gioco che li contiene:

Molti componenti hanno proprietà specifiche del proprio tipo che possono essere modificate; sono inoltre disponibili funzioni specifiche per ciascun tipo di componente, che consentono di interagire con essi durante l’esecuzione:
-- disable the can "body" sprite
msg.post("can#body", "disable")
-- play "hoohoo" sound on "bean" in 1 second
sound.play("bean#hoohoo", { delay = 1, gain = 0.5 } )
I componenti vengono aggiunti direttamente a un oggetto di gioco oppure come riferimenti a file di componenti:
Fai clic con il pulsante destro sull’oggetto di gioco nella vista Outline e seleziona Add Component (aggiunta diretta) oppure Add Component File (aggiunta come riferimento a un file).
Nella maggior parte dei casi conviene creare i componenti direttamente nell’oggetto di gioco, ma i seguenti tipi di componenti devono essere creati in file di risorsa separati prima di essere aggiunti a un oggetto di gioco tramite riferimento:
Defold supporta i seguenti tipi di componenti:
È possibile aggiungere altri componenti tramite estensioni:
I componenti di un oggetto di gioco vengono abilitati quando viene creato l’oggetto di gioco. Per disabilitare un componente, inviagli un messaggio disable:
-- disable the component with id 'weapon' on the same game object as this script
msg.post("#weapon", "disable")
-- disable the component with id 'shield' on the 'enemy' game object
msg.post("enemy#shield", "disable")
-- disable all components on the current game object
msg.post(".", "disable")
-- disable all components on the 'enemy' game object
msg.post("enemy", "disable")
Per abilitare nuovamente un componente, puoi inviargli un messaggio enable:
-- enable the component with id 'weapon'
msg.post("#weapon", "enable")
Ogni tipo di componente di Defold ha proprietà diverse. Il pannello Properties dell’editor mostra le proprietà del componente attualmente selezionato nel pannello Outline. Consulta i manuali dei diversi tipi di componenti per maggiori informazioni sulle proprietà disponibili.
I componenti visivi hanno solitamente proprietà di posizione e rotazione e, nella maggior parte dei casi, anche una proprietà di scala. Puoi modificare queste proprietà nell’editor, ma quasi sempre non puoi modificarle durante l’esecuzione (l’unica eccezione è la scala dei componenti sprite ed etichetta, che può essere modificata a runtime).
Se devi modificare la posizione, la rotazione o la scala di un componente durante l’esecuzione, modifica invece la posizione, la rotazione o la scala dell’oggetto di gioco a cui appartiene. Questo influisce anche su tutti gli altri componenti dell’oggetto di gioco. Se vuoi modificare un solo componente tra i molti associati a un oggetto di gioco, ti consigliamo di spostarlo in un oggetto di gioco separato e di aggiungere quest’ultimo come figlio dell’oggetto di gioco a cui il componente apparteneva in origine.
L’ordine di disegno dei componenti visivi dipende da due fattori:
A ogni componente viene assegnato un materiale e ogni materiale ha uno o più tag. Lo script di rendering definisce a sua volta una serie di predicati, ciascuno dei quali corrisponde a uno o più tag dei materiali. I predicati vengono disegnati uno alla volta nella funzione update() dello script di rendering e vengono disegnati i componenti che corrispondono ai tag definiti in ciascun predicato. Lo script di rendering predefinito disegna prima gli sprite e le mappe di tessere in un passaggio, poi gli effetti particellari in un altro passaggio, entrambi nello spazio del mondo. Quindi disegna i componenti GUI in un passaggio separato nello spazio dello schermo.
Tutti gli oggetti di gioco e i componenti sono posizionati nello spazio 3D, con posizioni espresse come oggetti vector3. Quando visualizzi il contenuto grafico del gioco in 2D, i valori X e Y determinano la posizione di un oggetto lungo gli assi della “larghezza” e dell’“altezza”, mentre la posizione Z determina la posizione lungo l’asse della “profondità”. La posizione Z ti permette di controllare la visibilità degli oggetti sovrapposti: uno sprite con un valore Z di 1 apparirà davanti a uno sprite con posizione Z pari a 0. Per impostazione predefinita, Defold usa un sistema di coordinate che consente valori Z compresi tra -1 e 1:

I componenti che corrispondono a un predicato di rendering vengono disegnati insieme e il loro ordine di disegno dipende dal valore Z finale del componente. Il valore Z finale di un componente è la somma dei valori Z del componente stesso, dell’oggetto di gioco a cui appartiene e di tutti gli oggetti di gioco genitori.
L’ordine di disegno di più componenti GUI non è determinato dal loro valore Z. L’ordine di disegno dei componenti GUI è controllato dalla funzione gui.set_render_order().
Esempio: due oggetti di gioco A e B. B è figlio di A. B ha un componente sprite.
| Elemento | Valore Z |
|---|---|
| A | 2 |
| B | 1 |
| B#sprite | 0.5 |

Con la gerarchia riportata sopra, il valore Z finale del componente sprite di B è 2 + 1 + 0.5 = 3.5.
Se due componenti hanno esattamente lo stesso valore Z, l’ordine è indefinito: i componenti potrebbero sfarfallare, alternando la loro posizione davanti e dietro, oppure essere disegnati in un ordine su una piattaforma e in un altro ordine su un’altra piattaforma.
Lo script di rendering definisce un piano vicino e un piano lontano per i valori Z. I componenti con un valore Z al di fuori di questo intervallo non vengono disegnati. L’intervallo predefinito va da -1 a 1, ma puoi modificarlo facilmente. La precisione numerica dei valori Z con limiti vicino e lontano pari a -1 e 1 è molto elevata. Quando lavori con asset 3D, potrebbe essere necessario modificare i limiti vicino e lontano della proiezione predefinita in uno script di rendering personalizzato. Consulta il manuale del rendering per maggiori informazioni.
Il file delle impostazioni game.project contiene molti valori che specificano il numero massimo di risorse di un determinato tipo che possono esistere contemporaneamente, spesso conteggiato per ciascuna collezione caricata (detta anche mondo). Il motore Defold usa questi valori massimi per preallocare la memoria necessaria, evitando allocazioni dinamiche e frammentazione della memoria durante l’esecuzione del gioco.
Le strutture dati di Defold usate per rappresentare i componenti e le altre risorse sono ottimizzate per occupare meno memoria possibile, ma occorre comunque impostare i valori con attenzione per evitare di allocare più memoria di quanta sia effettivamente necessaria.
Per ottimizzare ulteriormente l’uso della memoria, il processo di build di Defold analizza il contenuto del gioco e sostituisce i valori massimi quando è possibile determinare con certezza le quantità esatte: