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:
Code language: C# (cs)
using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { [] private int stepCount = 95; [] private string testString = "Hi!"; }
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.
Code language: C# (cs)
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; }
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:
Code language: C# (cs)
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; }
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.
Code language: C# (cs)
using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { [] [] private float floatNumber = 0.25f; [] [] private int wholeNumber = 9; }
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.
Code language: C# (cs)
using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { [] [] private string someString = "Hello!"; }
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.
Code language: C# (cs)
using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { [] private string nickname = "Jane"; [] [] private string characterDescription; }
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.
Code language: C# (cs)
using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { [] private string nickname = "Jane"; [] [] private string characterDescription; }
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.
Code language: C# (cs)
using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { [] [] private string characterName = "Super Boy"; }
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.
Code language: C# (cs)
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; } }
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.
Code language: C# (cs)
using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { [] [] private float money = 100f; private void ResetToDefault() { money *= 2f; } }
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.
Code language: C# (cs)
using System.Collections; using System.Collections.Generic; using UnityEngine; [] [] public class TestScript : MonoBehaviour { }
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.
Code language: C# (cs)
using System.Collections; using System.Collections.Generic; using UnityEngine; [] public class TestScript : MonoBehaviour { }
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