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.