How to access properties of a nested class from another script.
Accesso ad una proprietà all’interno di una classe annidata in uno script esterno.
Create an ‘Empty Object’ and attach the scripts:
– SomeClass.cs
using UnityEngine; using System.Collections; public class SomeClass : MonoBehaviour // deve essere MonoBehaviour anche questa o non funziona { // proprietà della classe principale public int bullets = 10; // classe annidata [System.Serializable] // DEVO dichiarala Serializable o non si può accede da uno script esterno public class Something { // proprietà della classe annidata public int fuel = 15; } public Something Some; // la inserisco in una variabile }
– SomeOtherClass.cs
using UnityEngine; using System.Collections; public class SomeOtherClass : MonoBehaviour { void Start() { // il nome SomeClass è quello dello script SomeClass.cs SomeClass SomeClassScript = transform.GetComponent<SomeClass>(); // variabile che contiene la classe principale . proprietà Debug.Log(SomeClassScript.bullets); // 10 // nomeScript.nomeVariabileClasse.proprietà Debug.Log(SomeClassScript.Some.fuel); // 15 } }
Come funziona?
1. SomeOtherClass.cs
– memorizza in una variabile lo script ottenuto con GetComponent
– richiama la proprietà della classe principale SomeClassScript.bullets
– richiama la proprietà della classe annidata SomeClassScript.Some.fuel
2. SomeClass.cs
– dichiaro l’accessibilità della classe dall’esterno serializzandola [System.Serializable]
– inserisco la classe in una variabile public Something Some
Posso notare che poi la chiamata sarà su – Some – SomeClassScript.Some.fuel