27-05-2016, 06:43 PM
Si, per come sono impostati gli script ora dovresti creare manualmente ogni singola variabile.
Come ha detto giustamente itreturns, il problema è facilmente risolvibile utilizzando gli array.
Per implementare gli array negli script di prima basta fare qualche semplice modifica, infatti lo script Manager diventa:
La riga "public bool[] obj_took;" definisce obj_took come array booleano.
La riga "obj_took = new bool[10];" definisce la lunghezza dell'array (ovvero quante variabili).
La riga "obj_took [1] = true;" definisce lo stato della seconda variabile (l'array parte da 0).
Mentre lo script objGrab diventa:
La riga "if (GameObject.Find("Manager").GetComponent<Manager>().obj_took[1] == true)" controlla lo stato della seconda variabile.
La riga "GameObject.Find ("Manager").GetComponent<Manager> ().obj_took[1] = true;" imposta il valore della seconda variabile.
Questo è tutto, se provi ad avviare la simulazione del gioco l'oggetto con lo script ObjGrab non comparirà perchè la variabile è impostata su "true" nello script Manager.
Come ha detto giustamente itreturns, il problema è facilmente risolvibile utilizzando gli array.
Per implementare gli array negli script di prima basta fare qualche semplice modifica, infatti lo script Manager diventa:
Codice:
using UnityEngine;
using System.Collections;
public class Manager : MonoBehaviour {
public bool[] obj_took;
void Start () {
obj_took = new bool[10];
obj_took [1] = true;
DontDestroyOnLoad (transform.gameObject);
}
void Update () {
}
}
La riga "obj_took = new bool[10];" definisce la lunghezza dell'array (ovvero quante variabili).
La riga "obj_took [1] = true;" definisce lo stato della seconda variabile (l'array parte da 0).
Mentre lo script objGrab diventa:
Codice:
using UnityEngine;
using System.Collections;
public class ObjGrab : MonoBehaviour {
void Start () {
if (GameObject.Find("Manager").GetComponent<Manager>().obj_took[1] == true)
{
Destroy(this.gameObject);
}
}
void Update () {
}
void OnCollisionEnter(Collision collision) {
GameObject.Find ("Manager").GetComponent<Manager> ().obj_took[1] = true;
Destroy (this.gameObject);
}
}
La riga "GameObject.Find ("Manager").GetComponent<Manager> ().obj_took[1] = true;" imposta il valore della seconda variabile.
Questo è tutto, se provi ad avviare la simulazione del gioco l'oggetto con lo script ObjGrab non comparirà perchè la variabile è impostata su "true" nello script Manager.