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
Aunque las imágenes individuales se usan a menudo como fuente para sprites, por motivos de rendimiento las imágenes deben combinarse en conjuntos de imágenes más grandes, llamados atlas. Combinar conjuntos de imágenes más pequeñas en atlas es especialmente importante en dispositivos móviles, donde la memoria y la potencia de procesamiento son más escasas que en computadoras de escritorio o consolas de videojuegos dedicadas.
En Defold, un recurso atlas es una lista de archivos de imagen separados, que se combinan automáticamente en una imagen más grande.
Selecciona New... ▸ Atlas en el menú contextual del navegador Assets. Nombra el nuevo archivo de atlas. El editor abrirá el archivo en el editor de atlas. Las propiedades del atlas se muestran en el panel Properties para que puedas editarlas (ver más abajo para más detalles).
Debes rellenar un atlas con imágenes o animaciones antes de poder usarlo como fuente gráfica para componentes de objeto, como componentes Sprite y ParticleFX.
Asegúrate de haber agregado tus imágenes al proyecto (arrastra y suelta archivos de imagen en la ubicación correcta en el navegador Assets).
Arrastra y suelta imágenes desde el panel Assets a la vista del editor.
Como alternativa, haz click derecho en la entrada raíz Atlas del panel Outline.
Selecciona Add Images en el menú contextual emergente para agregar imágenes individuales.
Se abre un diálogo desde el que puedes buscar y seleccionar las imágenes que quieres agregar al Atlas. Ten en cuenta que puedes filtrar los archivos de imagen y seleccionar varios archivos a la vez.

Las imágenes agregadas se listan en Outline y el atlas completo puede verse en la vista central del editor. Puede que necesites presionar F (View ▸ Frame Selection en el menú) para encuadrar la selección.

Selecciona Add Animation Group en el menú contextual emergente para crear un grupo de animación flipbook.
Se agrega al atlas un grupo de animación nuevo y vacío con un nombre predeterminado (“New Animation”).
Arrastra y suelta imágenes desde el panel Assets a la vista del editor para agregarlas al grupo seleccionado actualmente.
Como alternativa, haz click derecho en el grupo nuevo y selecciona Add Images en el menú contextual.
Se abre un diálogo desde el que puedes buscar y seleccionar las imágenes que quieres agregar al grupo de animación.

Presiona Space con el grupo de animación seleccionado para previsualizarlo, y Ctrl/Cmd+T para cerrar la previsualización. Ajusta las Properties de la animación según sea necesario (ver más abajo).

Puedes reordenar las imágenes en la vista Outline seleccionándolas y presionando Alt + Up/down. También puedes crear duplicados fácilmente copiando y pegando imágenes en la vista Outline (desde el menú Edit, el menú contextual de click derecho o los atajos de teclado).
Cada recurso atlas tiene un conjunto de propiedades. Estas se muestran en el panel Properties cuando seleccionas el elemento raíz en la vista Outline.
/builtins/materials/*_paged_atlas.material.
search=replace.
El nombre original de cada imagen (el nombre base del archivo) se transformará usando estos patrones. (Por ejemplo, un patrón hat=cat,_normal= cambiará el nombre de una imagen llamada hat_normal a cat). Esto es útil al hacer coincidir animaciones entre atlas.A continuación se muestran ejemplos de los distintos ajustes de propiedades con cuatro imágenes cuadradas de tamaño 64x64 agregadas a un atlas. Observa cómo el atlas salta a 256x256 en cuanto las imágenes no caben en 128x128, lo que produce mucho espacio de textura desperdiciado.

Cada imagen de un atlas tiene un conjunto de propiedades:

Además de la lista de imágenes que forman parte de un grupo de animación, hay un conjunto de propiedades disponible:
None no reproduce nada; se muestra la primera imagen.Once Forward reproduce la animación una vez desde la primera hasta la última imagen.Once Backward reproduce la animación una vez desde la última hasta la primera imagen.Once Ping Pong reproduce la animación una vez desde la primera hasta la última imagen y luego vuelve a la primera imagen.Loop Forward reproduce la animación repetidamente desde la primera hasta la última imagen.Loop Backward reproduce la animación repetidamente desde la última hasta la primera imagen.Loop Ping Pong reproduce la animación repetidamente desde la primera hasta la última imagen y luego vuelve a la primera imagen.Es posible crear una textura y un atlas en runtime.
Usa resource.create_texture(path, params) para crear un nuevo recurso de textura:
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 vez creada la textura, puedes usar resource.set_texture(path, params, buffer) para definir los pixeles de la textura:
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)
Es posible usar resource.set_texture() para actualizar también una subregión de la textura usando un ancho y alto de buffer menores que el tamaño completo de la textura, y cambiando los parámetros x e y de resource.set_texture().
La textura puede usarse directamente en un componente de modelo con go.set():
go.set("#model", "texture0", my_texture_id)
Si la textura debe usarse en un componente sprite, primero debe usarse en un atlas. Usa resource.create_atlas(path, params) para crear un Atlas:
local params = {
texture = texture_id,
animations = {
{
id = "my_animation",
width = width,
height = height,
frame_start = 1,
frame_end = 2,
}
},
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)
-- asigna el atlas al componente 'sprite' del mismo objeto de juego
go.set("#sprite", "image", my_atlas_id)
-- reproduce la animación
sprite.play_flipbook("#sprite", "my_animation")