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.