Vamos a ver como modificar la vista en el inspector de un script que hayamos creado de manera rápida y sencilla.
En primer lugar, analicemos su utilidad, quizás esta sea una de las herramientas de Unity3D que lo hacen realmente una gran alternativa, ya que puede facilitar la edición de los parámetros de entrada sin apenas consumir tiempo de desarrollo, de hecho, todo lo contrario, lo agilizaría.
Unity3D, ha facilitado mucho esta funcionalidad de manera que, en este primer contacto vamos a ver una forma sencilla de editar, valga la redundancia, el editor, es decir, los valores que veremos en el inspector, para verlos de una manera un poco más amigables para quien tenga que tratar con dicho componente más adelante.
Vamos a crear un script sencillo, realmente no es necesaria una utilidad en concreto para este ejemplo, simplemente ver cómo podemos cambiar el aspecto del componente en el inspector:
using UnityEngine; [DisallowMultipleComponent] public class InspectorEditExample : MonoBehaviour { [Range(-10, 10)] public float Rotation; [Header("Escala")] [Range(.1f, 1)] public float Scale; [HideInInspector] public Vector3 Position; void Start() { Position = Vector3.one * Random.Range(0f, 1f); transform.localPosition = Position; } void LateUpdate () { transform.Rotate(Vector3.up * Rotation); transform.localScale = Vector3.one * Scale; } }
Si asociamos este Script podremos ver la imagen mostrada arriba, Si nos fijamos apenas hemos tenido que hacer nada, ahora vamos a ver las posibilidades que tenemos si hacemos este tipo de edición:
[DisallowMultipleComponent] public class InspectorEditExample : MonoBehaviour
En primer lugar, como podemos ver en el script, al colocar estas etiquetas en las variables, han sido alteradas sus visualizaciones en el editor y a su vez, que tenemos etiquetas que afectan a la clase, como en este caso, que no nos permitirá añadir dos componentes iguales al mismo objeto para que no entren en conflicto entre sí.
[Range(-10, 10)] public float Rotation;
Pasando a nuestra primera variable pública el parámetro Range podemos ver que pasa de poder insertarse un número, a tener una barra para desplazar entre el mínimo y el máximo que permitamos, siendo el número de la izquierda el mínimo y el número máximo el de la derecha, en caso de poner el número menor a la derecha y el mayor a la izquierda, la barra se usaría de manera invertida, moviéndola hacia la izquierda para los números más grandes y hacia la derecha para los números más pequeños.
[Header("Escala")] [Range(.1f, 1)] public float Scale;
En la siguiente variable pública Scale, podemos ver que además podemos acumular estas etiquetas entre sí, siendo esta nueva etiqueta para poner un título encima de esta variable, así podremos dar una definición más concreta.
[HideInInspector] public Vector3 Position;
Y por último podemos ver en el Script una variable pública que no está en el componente a la hora de visualizarlo en el editor ¿Qué utilidad puede tener esto? Fácil, que sólo queramos que se pueda ver y/o editar a través de otros componentes, y no llenar el componente en el editor de datos que quien vaya a tener que modificarlo en la escena no solo no le interesa, sino que puede inducir a error en caso de creer que hay que rellenarlo.
Aquí tenemos una lista de las posibilidades que tenemos para editar la visualización del componente en el inspector a través de este método, que denominaremos "el método sencillo" ya que hay un método más complejo pero con una infinidad de posibilidades más, que veremos en otra ocasión.
- AddComponentMenu
- AssemblyIsEditorAssembly
- ColorUsageAttribute
- ContextMenu
- ContextMenuItemAttribute
- CreateAssetMenuAttribute
- DisallowMultipleComponent
- ExecuteInEditMode
- HeaderAttribute
- HelpURLAttribute
- HideInInspector
- ImageEffectOpaque
- ImageEffectTransformsToLDR
- MultilineAttribute
- NotConvertedAttribute
- NotFlashValidatedAttribute
- NotRenamedAttribute
- PropertyAttribute
- RangeAttribute
- RequireComponent
- RPC
- RuntimeInitializeOnLoadMethodAttribute
- SelectionBaseAttribute
- SerializeField
- SharedBetweenAnimatorsAttribute
- SpaceAttribute
- TextAreaAttribute
- TooltipAttribute
- UnityAPICompatibilityVersionAttribute
Espero que sirva de ayuda, y se entienda, la implementación y uso para estas pequeñas ediciones rápidas dentro de nuestro inspector.