Componentes
En Craftland Studio PC, un «componente» puede entenderse como un contenedor de datos.
Una entidad en sí misma es simplemente un identificador vacío; lo que puede hacer y cómo se comporta depende totalmente de los componentes que se le adjunten.
- Componente de movimiento: almacena solo datos relacionados con el movimiento, como la velocidad y la dirección del movimiento.
- Componente de renderizado: almacena los datos necesarios para el renderizado, como modelos y materiales.
- Componente de colisión: almacena datos para la detección de colisiones, como volúmenes y formas de colisión.
El sistema localiza las entidades que poseen combinaciones específicas de componentes y, a continuación, determina la lógica de comportamiento que se aplicará a estas entidades en función de los datos contenidos en dichos componentes.
Gestión de componentes
Acceda a la gestión de componentes a través del menú


También puede acceder a la interfaz de gestión de un componente directamente desde el propio componente:


Scripts
Montar scripts en un componente equivale a montar scripts en todas las entidades que utilizan ese componente:



Atributos
Atributos predeterminados
De forma predeterminada, la mayoría de los componentes ya poseen propiedades predeterminadas.

Tipos de propiedades
Las propiedades se clasifican como de solo lectura o modificables. Las propiedades de solo lectura solo se pueden consultar para conocer sus valores y no se pueden modificar mediante scripts; las propiedades modificables se pueden alterar mediante scripts.

Propiedades modificables

Propiedades de solo lectura
La capacidad de escritura de un atributo también se puede determinar por si su entrada de propiedad predeterminada está resaltada.

Por ejemplo, la propiedad position del objeto player difiere de la propiedad position del componente transform utilizado por otros objetos; no se puede modificar directamente a través de la API setProperty. Para mover el reproductor, se debe utilizar la API teleportPlayer dedicada:


Utilice la API Set Property para modificar los atributos modificables; utilice la API Get Property para recuperar los valores de las propiedades:

Además, ciertas propiedades predeterminadas son exclusivas del servidor; intentar modificarlas en el cliente dará lugar a un error. En los scripts de componentes, estas propiedades se filtran automáticamente en función de la plataforma de ejecución del script.
Propiedades personalizadas
Además de las propiedades predeterminadas disponibles, también puede añadir propiedades personalizadas a los componentes. Las propiedades personalizadas son modificables y funcionan como propiedades de doble extremo.

Detección de propiedades personalizadas
Es posible que haya observado un icono de supervisión junto a las propiedades personalizadas:

Al habilitar esta función de supervisión, el sistema envía un evento de «cambio de propiedad personalizada» cada vez que se modifica el valor de la propiedad, siguiendo esta lógica:
- Cuando la propiedad se modifica mediante la lógica del lado del servidor, el evento se envía tanto al servidor como al cliente.
- Cuando la propiedad se modifica mediante la lógica del lado del cliente, el evento solo se envía localmente.
Este evento de cambio de propiedad personalizada le permite detectar modificaciones más fácilmente, lo que permite realizar ajustes lógicos posteriores:

Si varios atributos personalizados tienen habilitada la detección de cambios, el elemento ID del atributo personalizado puede identificar qué atributo específico ha cambiado:

Al utilizar el primitivo de ID de propiedad personalizada, se debe especificar manualmente el tipo de componente.
Componentes asociados
Un componente puede tener varios componentes asociados. La combinación, las referencias o las dependencias entre componentes definen los límites lógicos y de capacidad de datos de una entidad.
Por ejemplo, el componente Jugador se vincula a los componentes Combatible, Puntuable y otros. Las entidades Jugador que utilizan el componente Jugador también pueden acceder a los datos y eventos de Combatible y Puntuable.
