11 atributos útiles de Unity que puedes usar para personalizar el Inspector

Es importante aprender a personalizar el aspecto de la ventana de inspección de Unity. Facilita el ajuste de varios valores de su juego.

Si bien el atributo SerializeField se usa comúnmente para mostrar variables en la ventana del inspector, hay otros atributos que puede usar, como el atributo Range, que muestra un control deslizante para la variable en el inspector, o el atributo Multiline, que hace que el campo de entrada sea un elemento múltiple. cuadro de texto de línea.

Saber cómo y cuándo usar estos atributos puede ser útil, tanto para usted como para las personas con las que trabaja. Enumeraré algunos de los útiles con ejemplos a continuación, ¡así que asegúrese de leerlos!

Tabla de contenido

SerializeFieldSerializeField

Quizás uno de los atributos de unidad más comunes y conocidos, el atributo SerializeField hace que una variable privada sea visible en el inspector y permite editarla. Esta es la base de otros atributos de Unity y la usará con bastante frecuencia.

Para serializar una variable, simplemente declare SerializeField arriba o delante de la línea de declaración de la variable:

using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { [] private int stepCount = 95; [] private string testString = "Hi!"; }

Code language: C# (cs)

El campo visible en el inspector variará según el tipo de variable serializada.

Entonces, si es una cadena, obtienes un cuadro de texto con un valor de cadena. Si es un booleano, obtienes una casilla de verificación. Etcétera.

using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { [] private string someString = "Hello!"; [] private float floatNumber = 12.5f; [] private int wholeNumber = 9; [] private Rigidbody2D rigidBody2D; [] private bool booleanValue = true; }

Code language: C# (cs)

Campos mostrados

Algunos de ustedes habrán notado que este atributo se comporta de manera similar cuando establece una variable como pública.

“Entonces, ¿por qué no configuramos todas las variables que queremos usar en el inspector como públicas? ¿No es eso más corto de escribir?

Por lo general, no se recomienda establecer una variable como pública a menos que sea absolutamente necesario, ya que otras clases pueden acceder a ella, lo que puede causar problemas. Usar el atributo SerializeField para mostrar variables privadas en el inspector es más seguro.

El atributo Encabezado se utiliza para crear un texto de encabezado en negrita. Esto es útil para separar cada grupo de variables que se muestran en el inspector en secciones para que sean más fáciles de leer o encontrar.

Para agregar un encabezado al inspector, simplemente coloque el atributo Encabezado sobre cualquier variable serializada:

using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { [] [] private string someString = "Hello!"; [] private float floatNumber = 12.5f; [] [] private int wholeNumber = 9; [] private Rigidbody2D rigidBody2D; [] private bool booleanValue = true; }

Code language: C# (cs)

Esto aparecerá en el inspector así:

Campos con encabezados

Espacio

El atributo Espacio crea un pequeño espacio entre 2 campos en el inspector. Esto es útil si desea crear grupos de campos pero no desea utilizar el atributo Encabezado.

Para usar el atributo Espacio, colóquelo entre variables serializadas, así:

using System.Collections; using System.Collections.Generic; using UnityEngine;  public class TestScript : MonoBehaviour {     []     private string someString = "Hello!";     []     private int wholeNumber = 75;     []     private bool isAvailable = false;      []     []     private string characterName = "Jane Doe";     []     private string nickname = "Jane"; }  Code language: C# (cs)

Esto creará un pequeño espacio entre el campo Está disponible y el campo Nombre del personaje.

hay un espacio en blanco

Rango

El atributo Rango le da a una variable numérica un control deslizante de valor en el inspector. Esto es útil cuando desea limitar el rango de valores de una variable a un rango específico.

using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { [] [] private float floatNumber = 0.25f; [] [] private int wholeNumber = 9; }

Code language: C# (cs)

Controles deslizantes de valor

Tenga en cuenta que el atributo Rango solo funciona con valores numéricos. Usarlo con cualquier otro tipo de variable dará como resultado que se muestre una advertencia en el inspector.

using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { [] [] private string someString = "Hello!"; }

Code language: C# (cs)

Las cadenas no pueden usar el atributo Rango.

área de texto

El atributo TextArea convierte un campo de entrada de cadena en un cuadro de texto que admite la entrada de varias líneas de texto. Esto se usa comúnmente cuando desea una cadena larga.

using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { [] private string nickname = "Jane"; [] [] private string characterDescription; }

Code language: C# (cs)

un cuadro de texto

multilínea

El atributo Multiline es similar al atributo TextArea en que convierte un campo de entrada en un cuadro de texto. La diferencia es que el cuadro de texto del atributo Multiline se muestra junto al nombre de la variable y el campo de entrada no se puede desplazar.

using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { [] private string nickname = "Jane"; [] [] private string characterDescription; }

Code language: C# (cs)

Atributo multilínea

Tenga en cuenta que el cuadro de texto de líneas múltiples no muestra barras de desplazamiento incluso cuando el texto se desborda.

El atributo Información sobre herramientas muestra un texto de información sobre herramientas flotante para una variable cuando pasa el mouse sobre el nombre de la variable en el inspector.

Esto generalmente se usa cuando desea agregar una descripción a una variable. Es bastante útil cuando trabajas con varias personas.

using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { [] [] private string characterName = "Super Boy"; }

Code language: C# (cs)

una información sobre herramientas

El atributo ContextMenu agrega un menú contextual al script que, cuando se selecciona, ejecutará una función.

Este atributo es muy útil cuando desea hacer algo rápidamente con el objeto del juego desde el inspector, como restablecer todas sus propiedades al valor predeterminado o establecer la posición del objeto en una determinada coordenada para una depuración rápida.

using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { [] private string characterName = "Super Boy"; [] private float money = 100f; [] private void ResetToDefault() { characterName = "Super Boy"; money = 100f; } }

Code language: C# (cs)

Esto creará un menú contextual llamado «Restablecer todos los valores a los valores predeterminados» para el componente TestScript.

Un nuevo menú contextual

Cuando se selecciona, se ejecutará la función ResetToDefault, configurando los valores de todas las variables a los valores predeterminados.

Antes:

Después:

El atributo ContextMenuItem es similar al atributo ContextMenu pero, en lugar de agregar un menú contextual al componente de secuencia de comandos, agrega un menú contextual a una variable.

Esto es útil cuando desea ejecutar una función que hace algo a una variable.

using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { [] [] private float money = 100f; private void ResetToDefault() { money *= 2f; } }

Code language: C# (cs)

Al hacer clic con el botón derecho en el nombre de la variable, aparecerá el menú contextual.

Del ejemplo de código anterior, al seleccionar «Duplicar el valor» se duplicará el valor actual de la variable dinero.

RequireComponent

El atributo RequireComponent obliga al objeto del juego al que está adjunto el script a agregar un componente y evitar que el componente se elimine siempre que el script esté adjunto.

Este atributo se usa cuando un script requiere que ciertos componentes estén presentes en un objeto de juego al que está adjunto.

using System.Collections; using System.Collections.Generic; using UnityEngine; [] [] public class TestScript : MonoBehaviour { }

Code language: C# (cs)

Del ejemplo anterior, el componente Fuente de audio y el componente Capsule Collider se agregarán al objeto del juego cuando este script se adjunte al objeto.

Y no puede eliminar esos componentes mientras el atributo o el script en sí aún existan dentro del objeto del juego.

No se permite quitar el componente.

SelecciónBase

El atributo SelectionBase marca el objeto del juego como la base de selección en la vista de escena, lo que significa que cuando se selecciona un objeto secundario del objeto base en la vista de escena, se seleccionará el objeto base en su lugar.

Esto es útil cuando tiene un objeto con varios elementos secundarios que solo están allí como decoración o cuando no desea hacer clic y mover accidentalmente los objetos secundarios de un objeto en la vista de escena.

using System.Collections; using System.Collections.Generic; using UnityEngine; [] public class TestScript : MonoBehaviour { }

Code language: C# (cs)

Estos son los atributos útiles de Unity que uso regularmente. Si no los has probado, te recomiendo que empieces a usarlos. Te harán la vida mucho más fácil.

Y si recién está comenzando y no sabe qué tipo de juego quiere hacer, tengo una lista ingeniosa para usted.

¡Salud!

Atribución

Ícono de programación hecho por Icongeek26 de www.flaticon.com