# Entities y Components

Selecciona un elemento haciendo clic en él en el lienzo o en el entity tree. Después verás sus componentes mostrados en el properties panel, a la derecha de la pantalla. Diferentes elementos tienen diferentes componentes que muestran cada uno ajustes específicos.

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-c9c570da87ad3e8ba629f2a0c0b64ea2587a34ac%2Fcomponents-in-editor.png?alt=media)

La mayoría de los elementos no interactivos tienen los siguientes componentes:

* **Transform**: Establece la posición, rotación y escala del elemento. Si el elemento es hijo de otro elemento en el [Entity Tree](https://docs.decentraland.org/creator/content-creator-es/primeros-pasos/scene-editor-essentials#the-entity-tree), estos valores son relativos a los del padre.
* **GLTF**: Qué modelo 3D cargar. Incluye la ruta local al archivo de este modelo 3D. También incluye algunas propiedades para configurar [colliders](https://docs.decentraland.org/creator/content-creator-es/scenes-sdk7/conceptos-esenciales-de-contenido-3d/colliders#colliders-on-3d-models) en el modelo.

Los elementos de tu escena son todos **Entities**. Todo en una escena es una Entity, son los bloques de construcción básicos de las escenas. Los elementos son Entities que tienen al menos una posición y una forma visible.

## Agregar componentes

Para agregar Components a cualquier Entity, haz clic en el **+** ícono en la parte superior de la pestaña de propiedades y selecciona el Component de la lista. Ver [Haz inteligente cualquier item](https://docs.decentraland.org/creator/content-creator-es/scene-editor/interactividad/make-any-item-smart)

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-5b1cb917a59ca7b5dcf0e28c7cf12bed517db15a%2Fadd-component.png?alt=media)

Puedes eliminar cualquier Component de una Entity haciendo clic en el ícono de los tres puntos a su derecha y seleccionando **Delete Component**.

## Crear una entity desde cero

Para crear una nueva Entity, haz clic derecho en la raíz **Scene** Entity en el Entity tree, o en cualquier otra Entity, y selecciona **Add Child**

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-46376236db2643c1394a6498cbbbec8519b7fe72%2Fnew-entity.png?alt=media)

Esto crea una Entity vacía con solo un **Transform** Component. La nueva entity es hija de la entity padre en la que hiciste clic. Luego puedes añadir cualquier otro Component que quieras para darle la forma que desees.

## Componentes disponibles

Los siguientes Components pueden añadirse a cualquier Entity a través de la UI del Scene Editor:

* **Mesh Renderer**: Le da a la Entity una forma visible basada en una forma primitiva (cubo, plano, cilindro, cono o esfera).
* **Mesh Collider**: Le da a la Entity una geometría de collider invisible. Esto puede impedir que el jugador atraviese el elemento y/o puede hacerlo clicable. Ver [collider](https://docs.decentraland.org/creator/content-creator-es/scenes-sdk7/conceptos-esenciales-de-contenido-3d/colliders).
* **Material**: Define el color, la textura y otras propiedades de una Entity que tiene un **Mesh Renderer** Component. Ver [materials](https://docs.decentraland.org/creator/content-creator-es/scenes-sdk7/conceptos-esenciales-de-contenido-3d/materials).

  {% hint style="warning" %} **📔 Nota**: El elemento Debe tener un **Mesh Renderer** Component. No afecta a los elementos con una **GLTF** visible shape. {% endhint %}
* **Visibility**: Define si una Entity es invisible.
* **Light Source**: Añade una luz a la Entity.
* **Swap Material**: Cambia el material de una Entity que tiene un **GLTF** component. Si el modelo 3D tiene múltiples meshes, puedes cambiar el material de cada mesh individualmente.
* **Audio Source**: Reproduce un sonido desde un archivo de sonido en la ubicación de la Entity. Ver [Sounds](https://docs.decentraland.org/creator/content-creator-es/scenes-sdk7/conceptos-esenciales-de-contenido-3d/sounds).
* **Text Shape**: Muestra texto en el espacio 3D. Ver [Text](https://docs.decentraland.org/creator/content-creator-es/scenes-sdk7/conceptos-esenciales-de-contenido-3d/text).
* **Pointer Events**: Marca una Entity como clicable, mostrando un hover-hint.

{% hint style="warning" %}
**📔 Nota**: El **Pointer Events** Component solo proporciona retroalimentación. Para realizar acciones cuando se interactúa con una Entity, ver [Haz inteligente cualquier item](https://docs.decentraland.org/creator/content-creator-es/scene-editor/interactividad/make-any-item-smart)
{% endhint %}

* **Multiplayer**: Comparte cualquier cambio que suceda en la Entity para que todos los jugadores en la escena también lo vean. Puede configurarse para compartir cambios solo en ciertos components. Ver [Serverless Multiplayer](https://docs.decentraland.org/creator/content-creator-es/scenes-sdk7/redes/serverless-multiplayer#mark-an-entity-as-synced) para más detalles.

{% hint style="warning" %}
**📔 Nota**: Existen otros components en el SDK que actualmente solo son utilizables mediante código. También puedes crear tus propios [Custom components](https://docs.decentraland.org/creator/content-creator-es/scenes-sdk7/arquitectura/custom-components) mediante código; estos no tendrán una representación en la UI, pero pueden añadirse y editarse por código.

Ver [Combine con code](https://docs.decentraland.org/creator/content-creator-es/scene-editor/ampliar-con-codigo/overview) para ver cómo editar el código de tu escena.

También ten en cuenta que una Entity solo puede contener **uno** de cada Component. No es posible asignar una segunda instancia de un Component que ya exista en la entity. Por ejemplo, no puedes añadir dos **Actions** components a la misma Entity.
{% endhint %}

## Smart items

[Smart items](https://docs.decentraland.org/creator/content-creator-es/scene-editor/interactividad/smart-items) también pueden incluir componentes especiales que Controlan la interactividad de la Entity. Estos son típicamente:

* **Actions**: Lista todas las posibles acciones que el elemento puede realizar.
* **Triggers**: Determina cuándo se ejecutan las acciones del componente Actions.
* **States**: Lleva el registro del estado actual del elemento. El state puede usarse para lógica condicional, para que solo se disparen ciertas acciones si el elemento está en cierto estado.
* **Counter**: Lleva el registro de un contador. El contador puede usarse para lógica condicional, para que solo se disparen ciertas acciones si el valor del contador es igual/mayor/menor que un valor dado.

Ver [Smart items avanzados](https://docs.decentraland.org/creator/content-creator-es/scene-editor/interactividad/smart-items-advanced) para más detalles.

## Acerca de entities y components

Todo en una escena es una Entity. Todos los elementos y smart items en la escena son Entities.

Todas las características de una Entity están determinadas por sus components. Estos definen qué es la Entity, dónde está, cómo suena y cómo se comporta. Por ejemplo, un **Transform** component almacena las coordenadas, rotación y escala de la Entity. Un **MeshRenderer** component le da a la Entity una forma visible (como un cubo o una esfera), y un **Material** component le da a la Entity un color o textura.

Los valores en los components pueden cambiar con el tiempo. En el Scene Editor configuras los valores iniciales para estos components. Pero una vez que tu escena está en ejecución, las acciones del jugador o el paso del tiempo pueden cambiar esos valores.

Por ejemplo, un Smart Item plataforma en movimiento tiene una posición inicial que configuras mediante su **Transform** component, pero después de que las acciones de este elemento lo hagan moverse, su **Transform** tendrá valores diferentes.

Ver [Entities y components](https://docs.decentraland.org/creator/content-creator-es/scenes-sdk7/arquitectura/entities-components) para una mirada en profundidad a este concepto y cómo los usan las escenas de Decentraland.
