# Entities e Components

Selecione um item clicando nele no canvas ou na entity tree. Você então verá seus components exibidos no properties panel, à direita da tela. Itens diferentes têm components diferentes, e cada um exibe configurações específicas.

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

A maioria dos itens não interativos tem os seguintes components:

* **Transform**: Define a position, rotation e scale do item. Se o item for um child de outro item no [Entity Tree](https://docs.decentraland.org/creator/content-creator-pt/comecar/scene-editor-essentials#the-entity-tree), esses valores são relativos aos do parent.
* **GLTF**: Qual modelo 3D carregar. Inclui o local path para o file desse modelo 3D. Também inclui algumas properties para configurar [colliders](https://docs.decentraland.org/creator/content-creator-pt/scenes-sdk7/essenciais-de-conteudo-3d/colliders#colliders-on-3d-models) no modelo.

Os itens na sua scene são todos **Entities**. Tudo em uma scene é uma Entity; elas são os blocos de construção básicos das scenes. Itens são Entities que têm pelo menos uma position e uma visible shape.

## Adicionar components

Para adicionar Components a qualquer Entity, clique no **+** símbolo na parte superior da aba de properties e selecione o Component na lista. Veja [Torne qualquer item smart](https://docs.decentraland.org/creator/content-creator-pt/scene-editor/interatividade/make-any-item-smart)

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

Você pode deletar qualquer Component de uma Entity clicando no ícone de três pontos à direita dele e selecionando **Delete Component**.

## Criar uma entity do zero

Para criar uma Entity novinha em folha, clique com o botão direito no root **Scene** Entity na Entity tree, ou em qualquer outra Entity, e selecione **Add Child**

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

Isso cria uma Entity vazia com apenas um **Transform** Component. A nova entity é um child da parent entity em que você clicou. Você então pode adicionar qualquer outro Components que quiser para moldá-la em qualquer coisa que desejar.

## Components disponíveis

Os seguintes Components podem ser adicionados a qualquer Entity via a UI do Scene Editor:

* **Mesh Renderer**: Dá à Entity uma visible shape baseada em uma primitive shape (cube, plane, cylinder, cone ou sphere).
* **Mesh Collider**: Dá à Entity uma collider geometry invisível. Isso pode impedir que o player caminhe através do item e/ou pode torná-lo clicável. Veja [collider](https://docs.decentraland.org/creator/content-creator-pt/scenes-sdk7/essenciais-de-conteudo-3d/colliders).
* **Material**: Define a color, texture e outras properties de uma Entity que tem um **Mesh Renderer** Component. Veja [materials](https://docs.decentraland.org/creator/content-creator-pt/scenes-sdk7/essenciais-de-conteudo-3d/materials).

  {% hint style="warning" %} **📔 Nota**: O item deve ter um **Mesh Renderer** Component. Isso não afeta itens com uma **GLTF** visible shape. {% endhint %}
* **Visibility**: Define se uma Entity está invisível.
* **Light Source**: Adiciona uma luz à Entity.
* **Swap Material**: Troca o material de uma Entity que tem um **GLTF** component. Se o modelo 3D tiver múltiplas meshes, você pode trocar o material de cada mesh individualmente.
* **Audio Source**: Reproduz um som de um arquivo de áudio na localização da Entity. Veja [Sounds](https://docs.decentraland.org/creator/content-creator-pt/scenes-sdk7/essenciais-de-conteudo-3d/sounds).
* **Text Shape**: Exibe texto no espaço 3D. Veja [Text](https://docs.decentraland.org/creator/content-creator-pt/scenes-sdk7/essenciais-de-conteudo-3d/text).
* **Pointer Events**: Marca uma Entity como clicável, exibindo uma hover-hint.

{% hint style="warning" %}
**📔 Nota**: A **Pointer Events** Component fornece apenas feedback. Para executar ações quando uma Entity é interagida, veja [Torne qualquer item smart](https://docs.decentraland.org/creator/content-creator-pt/scene-editor/interatividade/make-any-item-smart)
{% endhint %}

* **Multiplayer**: Compartilha quaisquer alterações que aconteçam com a Entity para que todos os players na scene também as vejam. Pode ser configurado para compartilhar alterações apenas em certos components. Veja [Serverless Multiplayer](https://docs.decentraland.org/creator/content-creator-pt/scenes-sdk7/rede/serverless-multiplayer#mark-an-entity-as-synced) para mais detalhes.

{% hint style="warning" %}
**📔 Nota**: Outros components existem no SDK que atualmente só podem ser usados via code. Você também pode criar seus próprios [Custom components](https://docs.decentraland.org/creator/content-creator-pt/scenes-sdk7/arquitetura/custom-components) via code; eles não terão uma representação na UI, mas podem ser adicionados e editados via code.

Consulte [Combinar com código](https://docs.decentraland.org/creator/content-creator-pt/scene-editor/expandir-com-codigo/overview) para saber como editar o code da sua scene.

Observe também que uma Entity só pode conter **um** de cada Component. Não é possível atribuir uma segunda instância de um Component que já existe na entity. Por exemplo, você não pode ter dois **Actions** components na mesma Entity.
{% endhint %}

## Smart items

[Smart items](https://docs.decentraland.org/creator/content-creator-pt/scene-editor/interatividade/smart-items) também podem incluir components especiais que controlam a interactivity da Entity. Esses geralmente são:

* **Actions**: Lista todas as ações possíveis que o item pode executar.
* **Triggers**: Determina quando as ações do component Actions são executadas.
* **States**: Mantém o controle do current state do item. O state pode ser usado para lógica condicional, para acionar certas ações apenas se o item estiver em um determinado state.
* **Counter**: Mantém o controle de um counter. O counter pode ser usado para lógica condicional, para acionar certas ações apenas se o valor do counter for igual/maior/menor que um valor dado.

Consulte [Smart items avançados](https://docs.decentraland.org/creator/content-creator-pt/scene-editor/interatividade/smart-items-advanced) para mais detalhes.

## Sobre entities e components

Tudo em uma scene é uma Entity. Todos os itens e smart items na scene são Entities.

Todas as características de uma Entity são determinadas por seus components. Eles definem o que a Entity é, onde ela está, como soa e como se comporta. Por exemplo, um **Transform** component armazena as coordinates, rotation e scale da Entity. Um **MeshRenderer** component dá à Entity uma visible shape (como um cube ou uma sphere), e um **Material** component dá à Entity uma color ou texture.

Os valores dos components podem mudar ao longo do tempo. No Scene Editor, você configura os valores iniciais desses components. Mas, quando sua scene estiver em execução, as ações do player ou a passagem do tempo podem alterar esses valores.

Por exemplo, um Smart Item de plataforma em movimento tem uma position inicial que você define por meio do seu **Transform** component, mas depois que as ações desse item fazem com que ele se mova, seu **Transform** terá valores diferentes.

Consulte [Entities and components](https://docs.decentraland.org/creator/content-creator-pt/scenes-sdk7/arquitetura/entities-components) para uma análise aprofundada desse conceito e de como eles são usados pelas scenes do Decentraland.
