lunes, 15 de junio de 2015

Unity3D Scripting: Modificación básica de inspector

Aquí volvemos una vez más a aprender algo, esta vez muy práctico tanto para el programador, como, una vez desarrollada esta herramienta, para el dibujante, músico, diseñador de nivel, guionista...

Vamos a ver como modificar la vista en el inspector de un script que hayamos creado de manera rápida y sencilla.
Visualización de configuración de editor
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.
Toda esta lista tiene un enlace a la documentación oficial en la web de Unity para quien quiera investigar un poco al respecto.

Espero que sirva de ayuda, y se entienda, la implementación y uso para estas pequeñas ediciones rápidas dentro de nuestro inspector.

2 comentarios:

  1. Estoy conociedo el blog y tienes entradas muy interesantes. Lastima que algunas de ellas no están completas. Por ejemplo aquí mencionas un método complejo para editar la visualización del componente en el inspector, pero no has escrito ninguna entrada al respecto. Ojalá lo hagas más adelante

    ResponderEliminar
  2. Hola, soy muy creativo pero de programar se poco, hice un modulo de informatica y tengo fundamentos de programacion, estoy interesado en HACER MUSICA PARA JUEGOS, especialmente en 8-16 bits que programas recomiendas? y si quisiera programar mis juegos en 2D en pantalla estatica? por donde deberia empezar? quisiera hacer juegos a medias, yo puedo aportar sonidos, musica, diseño y dialogos etc

    ResponderEliminar