Accedere a una variabile da un altro script C #

Puoi dirmi come accedere a una variabile di uno script da un altro script? Ho persino letto tutto sul sito web dell’unità, ma non riesco ancora a farlo. So come accedere a un altro object ma non a un’altra variabile.

Questa è la situazione: sono nello script B e voglio accedere alla variabile X dallo script A. La variabile X è boolean . Mi potete aiutare ?

A proposito, ho bisogno di aggiornare il valore di X in modo costante nello script B , come faccio? Accedilo nella funzione di Update Se potessi darmi ed esempio con queste lettere sarebbe fantastico!

Grazie

Per prima cosa è necessario ottenere il componente script della variabile e, se si trovano in oggetti di gioco diversi, è necessario passare l’object di gioco come riferimento nell’ispettore.

Ad esempio, ho scriptA.cs in GameObject A e scriptB.cs in GameObject B :

scriptA.cs

 // make sure its type is public so you can access it later on public bool X = false; 

scriptB.cs

 public GameObject a; // you will need this if scriptB is in another GameObject // if not, you can omit this // you'll realize in the inspector a field GameObject will appear // assign it just by dragging the game object there public scriptA script; // this will be the container of the script void Start(){ // first you need to get the script component from game object A // getComponent can get any components, rigidbody, collider, etc from a game object // giving it  meaning you want to get a component with type scriptA // note that if your script is not from another game object, you don't need "a." // script = a.gameObject.getComponent(); < -- this is a bit wrong, thanks to user2320445 for spotting that // don't need .gameObject because a itself is already a gameObject script = a.getComponent(); } void Update(){ // and you can access the variable like this // even modifying it works script.X = true; } 

solo per aver completato la prima risposta

non c’è bisogno di a.gameObject.getComponent();
a è già un object di gioco, quindi lo farà
a.getComponent();
e se la variabile a cui stai tentando di accedere si trova nei figli dell’object di gioco, devi utilizzare a.GetComponentInChildren();
e se hai bisogno di una variabile o metodo puoi accedervi in ​​questo modo
a.GetComponentInChildren().nameofyourvar; a.GetComponentInChildren().nameofyourmethod(Methodparams);

Puoi usare statico qui.

ecco l’esempio:

ScriptA.cs

 Class ScriptA : MonoBehaviour{ public static bool X = false; } 

ScriptB.cs

 Class ScriptB : MonoBehaviour{ void Update() { bool AccesingX = ScriptA.X; // or you can do this also ScriptA.X = true; } } 

per ulteriori dettagli, è ansible fare riferimento alla class Singleton.