JS Basics – Passing variables between functions attached to different GameObjects

Hierarchy:

– Cube -> attach CubeScript.js

– GameController (Empty GameObject), Inspector> Tag rollout ‘GameController’ -> attach GameController.JS

CubeScript.js


#pragma strict

// definisco la variabile per il punteggio
var scoreValue : int; 

// variabile privata, non visibile in Inspector, mi serve per ottenere il componente GameController
private var gameController : GameController; 

function Start ()
{
    // inserisco in una variabile l'oggetto con tag GameController
    var gameControllerObject : GameObject = GameObject.FindWithTag ("GameController");
    // se l'oggetto con tag GameController esiste lo inserisco in una variabile
    if (gameControllerObject != null)
    {
        gameController = gameControllerObject.GetComponent (GameController);
    }
    // se l'oggetto con tag GameController non esiste restituisce un messaggio di errore
    if (gameController == null)
    {
        Debug.Log ("Cannot find 'GameController' script");
    }
}

function Update () {
SendData();
}

function SendData() {
    yield WaitForSeconds (3); // aspetta 3 secondi
    scoreValue = 10;
    // invia scoreValue allo script taggato GameController -> funzione AddScore()
    gameController.AddScore (scoreValue);
    Destroy(gameObject); // distruggi l'oggetto corrente altrimenti l'invio di dati si ripete ad ogni frame

}

GameController.JS


#pragma strict

// contatore di punteggio, private perchè non vogliamo che sia modificabile da Inspector
private  var score : int;

function Start () {

}

function Update () {

}

function AddScore (newScoreValue : int) {
    // aggiorna score aggiungendo il valore newScoreValue
    // che gli viene inviato da CubeScript.js
    // alla riga:  - gameController.AddScore (scoreValue); -
    score += newScoreValue;
    Debug.Log(score);  
    
}

The final console result is: 10

Spiegazione:

1. CubeScript.js
a. cerca un GameObject con il tag GameController
b. se presente ottiene dall’oggetto GameController il componente GameController (che non è altro che GameController.JS)
c. invia a GameController.JS -> funzione ‘AddScore()’ la variabile ‘scoreValue’;

2. GameController.JS
a. riceve nella funzione ‘AddScore()’ la variabile ‘scoreValue’
b. assegna ‘scoreValue’ alla variabile ‘newScoreValue’
c. effettua i calcoli e visualizza in console il risultato finale.