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.