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
Sebbene spesso si usino immagini singole come sorgente per gli sprite, per ragioni di prestazioni è necessario combinarle in insiemi più grandi, chiamati atlas. Combinare insiemi di immagini più piccole in atlas è particolarmente importante sui dispositivi mobili, dove memoria e potenza di elaborazione sono più limitate rispetto ai computer desktop o alle console di gioco dedicate.
In Defold, una risorsa atlas è un elenco di file di immagini separati, che vengono combinati automaticamente in un’immagine più grande.
Seleziona New... ▸ Atlas dal menu contestuale nel browser Assets. Assegna un nome al nuovo file atlas. L’editor aprirà il file nell’editor degli atlas. Le proprietà dell’atlas vengono mostrate nel pannello Properties, dove puoi modificarle (vedi sotto per i dettagli).
Devi aggiungere immagini o animazioni a un atlas prima di poterlo usare come sorgente grafica per i componenti degli oggetti, come gli sprite e i componenti ParticleFX.
Assicurati di aver aggiunto le immagini al progetto (trascina e rilascia i file delle immagini nella posizione corretta nel browser Assets)
Trascina e rilascia le immagini dal pannello Asset nella vista dell’editor.
In alternativa, fai clic con il pulsante destro sulla voce radice Atlas nel pannello Outline.
Seleziona Add Images dal menu contestuale che compare per aggiungere immagini singole.
Si apre una finestra di dialogo in cui puoi trovare e selezionare le immagini da aggiungere all’atlas. Puoi filtrare i file delle immagini e selezionare più file contemporaneamente.

Le immagini aggiunte sono elencate in Outline e l’intero atlas è visibile nella vista centrale dell’editor. Potrebbe essere necessario premere F (View ▸ Frame Selection dal menu) per inquadrare la selezione.

Seleziona Add Animation Group dal menu contestuale che compare per creare un gruppo di animazione flipbook.
All’atlas viene aggiunto un nuovo gruppo di animazione vuoto con un nome predefinito (New Animation).
Trascina e rilascia le immagini dal pannello Asset nella vista dell’editor per aggiungerle al gruppo attualmente selezionato.
In alternativa, fai clic con il pulsante destro sul nuovo gruppo e seleziona Add Images dal menu contestuale.
Si apre una finestra di dialogo in cui puoi trovare e selezionare le immagini da aggiungere al gruppo di animazione.

Premi Space con il gruppo di animazione selezionato per visualizzarne l’anteprima e Ctrl/Cmd+T per chiudere l’anteprima. Regola le proprietà dell’animazione in Properties secondo necessità (vedi sotto).

Puoi riordinare le immagini in Outline selezionandole e premendo Alt + Up/down. Puoi anche creare facilmente duplicati copiando e incollando le immagini in Outline (dal menu Edit, dal menu contestuale accessibile con il pulsante destro o tramite le scorciatoie da tastiera).
Ogni risorsa atlas ha un insieme di proprietà. Queste vengono mostrate nel pannello Properties quando selezioni l’elemento radice nella vista Outline.
/builtins/materials/*_paged_atlas.material.
search=replace.
Il nome originale di ogni immagine (il nome del file senza estensione) viene trasformato usando questi schemi. (Ad esempio, lo schema hat=cat,_normal= rinomina un’immagine chiamata hat_normal in cat). Questo è utile per far corrispondere le animazioni tra atlas.Ecco alcuni esempi delle diverse impostazioni delle proprietà con quattro immagini quadrate di dimensioni 64x64 aggiunte a un atlas. Nota come l’atlas passi a 256x256 non appena le immagini non rientrano più in 128x128, causando un notevole spreco di spazio nella texture.

Ogni immagine in un atlas ha un insieme di proprietà:

Oltre all’elenco delle immagini che fanno parte di un gruppo di animazione, è disponibile un insieme di proprietà:
None non riproduce l’animazione e mostra la prima immagine.Once Forward riproduce l’animazione una volta dalla prima all’ultima immagine.Once Backward riproduce l’animazione una volta dall’ultima alla prima immagine.Once Ping Pong riproduce l’animazione una volta dalla prima all’ultima immagine e poi torna alla prima immagine.Loop Forward riproduce l’animazione ripetutamente dalla prima all’ultima immagine.Loop Backward riproduce l’animazione ripetutamente dall’ultima alla prima immagine.Loop Ping Pong riproduce l’animazione ripetutamente dalla prima all’ultima immagine e poi torna alla prima immagine.È possibile creare una texture e un atlas durante l’esecuzione.
Usa resource.create_texture(path, params) per creare una nuova risorsa texture:
local params = {
width = 128,
height = 128,
type = graphics.TEXTURE_TYPE_2D,
format = graphics.TEXTURE_FORMAT_RGBA,
}
local my_texture_id = resource.create_texture("/my_custom_texture.texturec", params)
Una volta creata la texture, puoi usare resource.set_texture(path, params, buffer) per impostarne i pixel:
local width = 128
local height = 128
local buf = buffer.create(width * height, { { name=hash("rgba"), type=buffer.VALUE_TYPE_UINT8, count=4 } } )
local stream = buffer.get_stream(buf, hash("rgba"))
for y=1, height do
for x=1, width do
local index = (y-1) * width * 4 + (x-1) * 4 + 1
stream[index + 0] = 0xff
stream[index + 1] = 0x80
stream[index + 2] = 0x10
stream[index + 3] = 0xFF
end
end
local params = { width=width, height=height, x=0, y=0, type=graphics.TEXTURE_TYPE_2D, format=graphics.TEXTURE_FORMAT_RGBA, num_mip_maps=1 }
resource.set_texture(my_texture_id, params, buf)
Puoi usare resource.set_texture() anche per aggiornare una porzione della texture, usando un buffer con larghezza e altezza inferiori alle dimensioni totali della texture e modificando i parametri x e y di resource.set_texture().
La texture può essere usata direttamente su un componente modello tramite go.set():
go.set("#model", "texture0", my_texture_id)
Per usare la texture su un componente sprite, devi prima usarla in un atlas. Usa resource.create_atlas(path, params) per creare un atlas:
local params = {
texture = texture_id,
animations = {
{
id = "my_animation",
width = width,
height = height,
frames = { 1 },
}
},
geometries = {
{
vertices = {
0, 0,
0, height,
width, height,
width, 0
},
uvs = {
0, 0,
0, height,
width, height,
width, 0
},
indices = {0,1,2,0,2,3}
}
}
}
local my_atlas_id = resource.create_atlas("/my_atlas.texturesetc", params)
-- assign the atlas to the 'sprite' component on the same go
go.set("#sprite", "image", my_atlas_id)
-- play the "animation"
sprite.play_flipbook("#sprite", "my_animation")
Le voci di frames sono indici con base 1 nella tabella geometries. Un elenco può riutilizzare, riordinare o saltare le geometrie, operazioni che non possono essere rappresentate dai campi di intervallo deprecati frame_start e frame_end. resource.get_atlas() restituisce frames; usa la stessa rappresentazione quando passi i dati dell’atlas a resource.set_atlas() o resource.create_atlas(). Le funzioni di impostazione e creazione accettano ancora i campi di intervallo per compatibilità, ma il nuovo codice dovrebbe usare frames.