Propiedades públicas y privadas, [SerializeField], [Header] y [HideInInspector]
Al crear un juego, la mayor parte del tiempo vamos a estar configurando cosas, en lo que destacaran el uso de las variables públicas y privadas y los atributos.
Variable públicas
- Van al principio de la clase
Son un poco claustrofóbicas…
- No van a entrar a ningún método, (pero siguen dentro de la clase).
- Se ven en el Inspector
<h5>Por qué usarlas?</h5>
- Son importantes en la interacción con otros Objs. ya que otros scripts/componentes las pueden ver y modificar.
Variables privadas y protegidas
- No pueden ser vistas (ni modificadas) por otras clases.
- No se ven en el Inspector, a menos que estén decoradas por
Atributos
“suerte de cartelito que escribimos arriba de una variable, aplicándole distintos efectos”
- [SerializeField]
○ La variable se muestra en el Inspector, aún si es privada.
- [HideInInspector]
○ La variable no se muestra en el Inspector.
- [Range(n,m)]
○ El editor nos aplica un slider, desde un valor inicial a un valor final, para modificar la variable.
- [TextArea]
- Ampliación de un cuadro de texto ("string") para escribir código o líneas de texto largas.
- [Header(“title”)] & [Space (px)]
- Aplicación de títulos y espacios en el código para maximizar legibilidad en editor.
- [Tooltip(“text”)]
- Nos permite dejar un texto (tip) que brotará en un cuadro al dejar el cursor sobre la variable decorada.
A escribirrr
<h5>- Sintaxis para declarar variables aplicadas al inspector:</h5> _modificadorDeAcceso + tipoDeDato + nombre;_
O sea:
public bool Checkbox
Nota: sin un modif. de acceso, la variable no aparecerá en el inspector.
Uso de arrays
Si quiero declarar una variable a la que pueda ir añadiendo o quitando valores de forma dinámica y ordenada; por ejemplo para llevar el control de los amigos que gana y pierde un personaje
Me puedo valer de un array, cuya sintaxis en Unity (C#) requiere especificar *esto es un array y este es el tipo de dato que almacenaremos dentro, lo cual se expresa como:
public string [] amigo;
<h5>¿Y qué pasa si queremos almacenar más información referida a estos amigos (regalos recibidos, por ejemplo)?</h5>
X Crear otro array simplemente no es una buena solución, ya que no estarán conectados entre sí.
-
Para esto se recomienda
Englobar las propiedades en una Clase nueva
-
agregando la directiva de UnityEngine para poder usar el objeto GameObject en nuestras variables
-
Decorando la clase con [System.Serializable] para que Unity pueda mostrarla en la consola a pesar de no ser un tipo de dato primitivo
En código:Using UnityEngine; [System.Serializable] Public class Amistad { Public string nombre; Public GameObject[] regalos;
Quedaría así:
using UnityEngine; using System.Collections; using System.Collections.Generic; Public class ExploradorDeVariables : Monobehaviour { Public Amistad[] amistades;
Ahora, desde el Inspector podemos agregar amigos y darles “regalos” en forma de GameObjects, (con la posibilidad de arrastrarlos desde la Hierarchy).
-
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?