Digamos que tengo una variable llamada button
de tipo Button
que es, por supuesto System.Serializable
.
Quiero que esa variable se pueda asignar a través del inspector, así que lo hago public
:
public class SomeScript : MonoBehaviour{
public Button button;
}
Lo que me da eso:
Ahora, quiero mantener el código limpio y seguro (organizado) y hay una razón real por la que necesito preservar la encapsulación.
Sé que hay varias formas de recuperar componentes en tiempo de ejecución como transform.Find("Some/Genius/TypeUnsafe/Path")
o GameObject.Find("3 seconds scene iteration").GetComponent(...).
quiero evitar eso.
¿Cómo mezclo una variable private access
con la que está public access
en el inspector?
unity
serialization
Jacob
fuente
fuente
private
en realidad no tiene la intención de evitar que un tercero obtenga acceso a un campo, está destinado a proporcionar una manera de decir "no mires detrás de la cortina a lo que realmente estoy haciendo", es decir, es principalmente una forma de evitar que tengas acceso a él.UI
/API
MVC
/MVVM
patrón para una gran aplicación (un cliente de juego en realidad) y tuve que separarUI
elAPI
. Necesitaba asignar valores a través de la causa del inspector simplemente: no hay otra manera.Find()
los métodos no son seguros para el tipo y es más fácil armar las cosas arrastrando y soltando Es muy, muy difícil construir un marco clásico de OOPUnity
y hay que buscar cosas extrañas como esta.Respuestas:
Estás buscando el atributo SerializeField
De los documentos:
Su código se vería así:
fuente
[SerializeField] private Button button;
facilitar la lectura, generalmente lo escribo todo en una línea: me resulta más fácil escanear cuando hay un montón de campos seguidos. Además, atornille los documentos para "casi nunca necesitará esto"; Realmente hago esto todo el tiempo.Puede mostrar su variable privada agregando el atributo SerializeField antes de la variable. Algo como esto
La variable anterior se mostrará a su inspector, pero sus otras clases no podrán obtenerla. Por el contrario , también puede ocultar su archivo público en el inspector a través del atributo HideInInspector . Algo como esto
Su otra secuencia de comandos podrá acceder a la variable anterior, pero no se mostrará al inspector.
fuente