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.