For the complete documentation index, see llms.txt. This page is also available as Markdown.

Composites

Genera un árbol de entities y components en runtime a partir de un archivo composite

Un composite es un archivo que describe un árbol de entities and components. En lugar de escribir código para crear cada entity una por una, puedes almacenar esa estructura en un archivo composite y generar todo con una sola llamada.

Puede que ya trabajes con composites sin darte cuenta:

  • Cada scene tiene un main.composite archivo. Contiene todo lo que agregaste y configuraste visualmente en el Scene Editor. Este archivo se carga automáticamente cuando tu scene comienza.

  • Custom Items se guardan como composite.json archivos. Cada Custom Item es un composite que puedes reutilizar en distintas scenes.

Esta página explica cómo generar un composite desde código en runtime, por ejemplo, para generar un Custom Item dinámicamente como parte de la lógica de tu scene.

Generar un composite

Generar un composite requiere dos pasos: cargar el archivo composite, luego generar lo. Cargar es asíncrono y generar es sincrónico, así que el patrón siempre es cargar y luego generar:

export async function spawnBarrel() {
  const src = "barrel.composite";

  // 1. Carga el composite desde su archivo
  await engine.getCompositeProvider().loadComposite(src);

  // 2. Genéralo: crea todas sus entities y components
  const barrel = engine.addEntityFromComposite(src);
  return barrel;
}

engine.getCompositeProvider().loadComposite(src) lee el archivo composite y lo carga en memoria. En una scene normal construida con @dcl/sdk, un composite provider ya está configurado para ti, y puedes acceder a él con engine.getCompositeProvider().

engine.addEntityFromComposite(src) luego crea todas las entities descritas en el composite, con todos sus components, y devuelve el root entity del árbol generado. Usa esta entity devuelta para leer o cambiar components más tarde, por ejemplo para reposicionar o eliminar el elemento generado.

💡 Consejo: Para hacer lo mismo sin escribir código, usa la Spawn Entity acción en el Scene Editor. Consulta Acerca de generar entities.

Coloca un composite generado

Pasa una transform opción a addEntityFromComposite() para colocar el composite generado en una posición, rotación o escala específicas. Este transform se aplica a la root entity.

Los campos de transform (position, rotation, y scale) son todos opcionales. Cualquier campo que omitas conserva el valor almacenado en el composite.

Limitación actual: composites anidados

La generación funciona para composites autónomos y Custom Items. Un composite puede referenciar otro composite desde una de sus entities, pero la carga no no recorre esas referencias anidadas todavía.

Si la root de un composite generado referencia otro composite (cualquier cosa que no sea main.composite, el único composite incluido con tu scene), falla al instanciarse. Por ahora, mantén los composites que generes autónomos.

Páginas relacionadas

Última actualización