Propiedades Personalizadas

Una de las principales fortalezas de **Tiled** es que permite establecer propiedades personalizadas en todas sus estructuras de datos básicas. De esta manera, es posible incluir muchas formas de información personalizada, que luego puede usar tu juego o el marco que estás utilizando para integrar mapas de Tiled.

Las propiedades personalizadas se muestran en la vista Atributos. Esta vista es sensible al contexto, por lo general muestra las propiedades del último objeto seleccionado. Para los patrones en un conjunto u objetos en una capa de objeto, también admite la selección múltiple.

## Añadir Atributo

Cuando se añade un atributo (usando el botón '+' en la parte inferior de la vista de Atributos), se solicita el ingreso de su nombre y su tipo. Actualmente Tiled soporta las siguientes tipos básicos de atributos:

* **string**: cualquier texto, incluso texto multi-línea.
* **float**: un número de punto flotante
* **int**: un número entero
* **bool**: verdadero o falso
* **file**: una ruta relativa apuntando a un archivo
* **color**: un valor de color de 32 bits

El tipo de atributo es usado para escoger un editor particular en la vista Atributos. Escoger un tipo numérico o lógico evita que el valor sea entrecomillado cuando se exporta en JSON y Lua.

## Herencia de Atributos de Patrón

[Desde Tiled 1.0] Cuando se añaden atributos personalizados a un patrón, estos atributos también serán visibles cuando se selecciones una instancia de objeto de ese patrón. Esto permite fácilmente sobreescribir por objeto ciertos atributos por defecto asociados con un patrón. Esto es particularmente útil cuando se combina con Patrones Tipados.

Los atributos heredados se mostrarán en gris (color del texto deshabilitado), mientras que los atributos sobreescritos se mostrarán en negro (generalmente el color del texto).

## Redefinir Atributos

### **Configuración General**

Por lo general, solo usa un conjunto limitado de tipos de objetos en un juego, y cada tipo de objeto tiene un conjunto fijo de propiedades posibles, con tipos específicos y valores predeterminados. Para ahorrar tiempo, Tiled permite predefinir estas propiedades en función del campo "Tipo" para objetos. Puede configurarlo utilizando el Editor de Tipos de Objeto, disponible en el menú *Ver*.

De forma predeterminada, Tiled almacena estos tipos de objeto en la configuración del usuario. Sin embargo, como a menudo querrá compartirlos con otras personas de tu equipo de trabajo, puedes exportar tus tipos de objeto o cambiar la ubicación de almacenamiento del archivo. Se utiliza un archivo XML o JSON simple con contenido que se explica por sí mismo para almacenar los tipos de objeto.

El color no solo afecta la representación de las diversas formas de los objetos, sino que también es el color de la etiqueta que se mostrará si le da un nombre al objeto.

Para que las propiedades predefinidas se muestren en la vista Atributos, todo lo que necesitas hacer es ingresar el nombre del tipo en la propiedad "Tipo" incorporada. Por lo general, esto es lo mismo que estás haciendo de todos modos para decirle a tu motor con qué tipo de objeto está tratando.

### **Patrones Tipados**

Si está utilizando objetos de patrones, puedes establecer el tipo en el patrón para evitar tener que establecerlo en cada instancia del objeto. Establecer el tipo en el patrón hace que las propiedades predefinidas sean visibles cuando se selecciona el patrón, permitiendo sobrescribir los valores. También hace visibles aquellos valores posiblemente sobrescritos cuando se selecciona una instancia de objeto de patrón, lo que nuevamente le permite sobrescribirlos.

Un ejemplo de caso de uso para esto sería definir tipos personalizados como "NPC", "Enemigo" o "Elemento" con propiedades como "nombre", "salud" o "peso". A continuación, puedes especificar valores para estos en los patrones que representan estas entidades. Y al colocar esos patrones como objetos, puedes sobrescribir esos valores según la necesidad de cada objeto.

## Mejoras Futuras

Hay muchos tipos de atributos personalizados que me gustaría añadir:

* **Enumeraciones**, donde puedas predefinir todos los valores posibles para formar un cuadro combinado (*combo box*) (#1211).
* **Referencias a objetos**, lo que permitiría fácilmente vincular objetos y Tiled podría mostrar dichas conexiones (#707).
* **Atributos matriciales**, que podría ser un atributo conteniendo un listado de valores (#1493).
* **Atributos de diccionarios**, podrían ser atributos que pueden contener cualquier número de otros atributos como hijos (#489).

También sería bueno agregar soporte para **limitar los valores de las propiedades**, como la longitud de los atributos de texto o con máximos y mínimos en valores numéricos.

Además de predefinir las propiedades según el tipo de objeto, me gustaría agregar soporte para **predefinir las propiedades para cada tipo de datos**. Para que se pueda definir qué propiedades personalizadas son válidas para mapas, conjuntos de patrones, capas, etc. (#1410).

Finalmente, las propiedades predefinidas funcionarían muy bien junto con el **soporte para proyectos** explícito. Entonces, podrías cambiar entre diferentes proyectos o comenzar un proyecto existente, sin la necesidad de configurar Tiled para usar las definiciones de tipo de objeto correctas.

Si te gusta alguno de estos planes, ayúdame a hacerlo más rápido convirtiéndote en patrocinador. ¡Mientras más apoyo recibo, más tiempo me puedo permitir gastar para mejorar **Tiled**!