Rango con intervalos personalizados – PropertyDrawer



Qué vamos a ver

Aunque las clases propias para el Inspector  son muy potentes, a veces necesitamos funciones concretas y más flexibles a la hora de cómo se muestran los campos en el Editor. Ahí es donde entran los Property y Decorator Drawers.

Hoy vamos a ver una versión mejorada del Rango nativo de Unity que nos permitirá establecer un intervalo entre los números consecutivos (por ejemplo un rango del 0 al 12 con intervalos de 3 en 3). Además también el atributo tiene la potencia de pasar otras variables como parámetros.



Programas necesarios

En este caso podemos usar cualquier versión de Unity y nuestro editor de código preferido.

Entrando en materia

Como en todo Property Drawer, lo primero que tenemos que hacer es crear nuestra clase derivada de PropertyAttribute donde vamos a definir nuestras variables y parámetros para el atributo. Aunque hay varios constructores, aquí vamos a ver solo el primero ya que los  demás son muy similares.

Como podemos ver, tenemos lo habitual del atributo Rango, que es el  valor mínimo y el máximo, pero además tenemos el intervalo que queremos entre números, y la precisión y el método de redondeo para cuando estamos trabajando con floats.

Ahora tenemos que pintar de forma adecuada  la variable a la que le hemos asignado el atributo.

Revisando la clase vemos que, verificamos el tipo de la variable, a continuación obtenemos los valores pasados mediante la etiqueta y por último pintamos el slider ajustando el valor de salida según el intervalo. Esto último es lo verdaderamente importante, ya que es una de las cosas que diferencia nuestro atributo del nativo de Unity.

Si nos damos cuenta, en la línea 40 estamos usando un método de extensión. Para los que no lo conozcan, estos sirven para añadir funcionalidad adicional a tipos  existentes sin necesidad de crear un tipo derivado. Vemos el ejemplo a continuación:

Aquí tenemos dos partes importantes. Por un lado debemos hacer tanto la clase como el método estáticos, y por otro lado añadir el modificador “this” al primer parámetro que es lo que nos hace poder crear este tipo de métodos.

Con todo esto visto, ya tenemos listas nuestras clases para pintar un slider con intervalos personalizados como el del gif del principio.

Si queréis ver y usar este atributo, tenéis el código completo aquí.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *