Unity3D – GET variables from script attached to ANOTHER GameObject
Hierarchy:
– GameController (Empty GameObject) -> attach GameControllerScript.JS
GameControllerScript.js
#pragma strict var score : int = 3; // NO PRIVATE or Cube.js can't access!!!
– Cube -> attach CubeScript.js
CubeScript.js
#pragma strict var gameController : GameControllerScript; function Start(){ // get the script of GameController object START ---------------------------------- var gameControllerObject : GameObject = GameObject.Find("/GameController"); // if the object exist if (gameControllerObject != null) { // ottengo il componente script gameController = gameControllerObject.GetComponent (GameControllerScript); } // if the object does not exist if (gameControllerObject == null) { Debug.Log ("Cannot find 'GameControllerScript' script"); } // get the script of GameController object END ------------------------------------ // from the another script I will get the variable - score - var level : int = gameController.score; Debug.Log("Level is: " + level); // the result is 3 }
For italian people: come funziona?
CubeScript.js esegue le seguenti operazioni:
1. dichiara una variabile per trovare e storare l’oggetto esterno con nome “/GameController”), notare lo slash che precede il nome necessario se l’oggetto no ha parent
– var gameControllerObject : GameObject = GameObject.Find(“/GameController”);
2. dichiara una variabile per ottenere e storare il componente dell’oggetto di cui al punto 1.
– var gameController : GameControllerScript;
– gameController = gameControllerObject.GetComponent (GameControllerScript);
3. dichiara e stora la variabile “score” proveniente dallo script esterno di cui al punto 2.
– var level : int = gameController.score;
IMPORTANTE: la variabile score DEVE essere pubblica, se è private non si potrà accedere ad essa con script esterni.