Componentes
No Craftland Studio PC, um “componente” pode ser entendido como um recipiente para dados.
Uma entidade em si é apenas um identificador vazio; o que ela pode fazer e como se comporta depende inteiramente dos componentes que estão anexados a ela.
- Componente de Movimento: Armazena apenas dados relacionados ao movimento, como velocidade e direção do movimento.
- Componente de Renderização: Armazena dados necessários para a renderização, como modelos e materiais.
- Componente de Colisão: Armazena dados para detecção de colisão, como volumes e formas de colisão.
O sistema localiza entidades que possuem combinações específicas de componentes e, em seguida, determina a lógica comportamental a ser aplicada a essas entidades com base nos dados contidos nesses componentes.
Gerenciamento de Componentes
Acesse o Gerenciamento de Componentes através do menu


Você também pode acessar a interface de gerenciamento de um componente diretamente a partir do próprio componente:


Scripts
Montar scripts em um componente é equivalente a montar scripts em todas as entidades que utilizam esse componente:



Atributos
Atributos padrão
Por padrão, a maioria dos componentes já possui propriedades padrão.

Tipos de propriedade
As propriedades são categorizadas como somente leitura ou graváveis. As propriedades somente leitura podem ser consultadas apenas para seus valores e não podem ser modificadas por meio de scripts; as propriedades graváveis podem ser alteradas por meio de scripts.

Propriedades graváveis

Propriedades somente leitura
A capacidade de gravação de um atributo também pode ser determinada pelo fato de sua entrada de propriedade padrão estar destacada.

Por exemplo, a propriedade position do objeto player difere da propriedade position do componente transform usado por outros objetos; ela não pode ser modificada diretamente por meio da API setProperty. Para mover o player, deve-se utilizar a API teleportPlayer dedicada:

Utilize a API Set Property para modificar atributos graváveis; utilize a API Get Property para recuperar valores de propriedade:

Além disso, certas propriedades padrão são exclusivas do servidor; tentar modificá-las no cliente resultará em um erro. Nos scripts de componentes, essas propriedades são filtradas automaticamente com base na plataforma de tempo de execução do script.
Propriedades personalizadas
Além das propriedades padrão disponíveis, você também pode adicionar propriedades personalizadas aos componentes. As propriedades personalizadas são graváveis e funcionam como propriedades de plataforma dupla.

Detecção de propriedades personalizadas
Você deve ter notado um ícone de monitoramento ao lado das propriedades personalizadas:

A ativação desse recurso de monitoramento faz com que o sistema envie um evento de “Alteração de propriedade personalizada” sempre que o valor da propriedade for alterado, seguindo esta lógica:
- Quando a propriedade é modificada por meio da lógica do lado do servidor, o evento é enviado tanto para o servidor quanto para o cliente.
- Quando a propriedade é modificada por meio da lógica do lado do cliente, o evento é enviado apenas localmente.
Esse evento de alteração de propriedade personalizada permite detectar alterações mais facilmente, possibilitando ajustes lógicos subsequentes:

Se vários atributos personalizados tiverem a detecção de alterações ativada, o elemento de ID do atributo personalizado poderá identificar qual atributo específico foi alterado:

Ao utilizar o primitivo de ID de propriedade personalizada, o tipo de componente deve ser especificado manualmente
Componentes associados
Um componente pode possuir vários componentes associados. A combinação, referências ou dependências entre componentes definem os limites lógicos e de capacidade de dados de uma entidade.
Por exemplo, o componente Player vincula-se aos componentes Combatable, Scoreable e outros. As entidades Player que utilizam o componente Player também podem acessar dados e eventos Combatable e Scoreable.
