Tengo una variedad de gameObjects que puedo desactivar fácilmente con un bucle. Sin embargo, no quiero desactivar un gameObject del lote. Así que estoy proporcionando un valor int que es la posición de gameObject en esa matriz. ¿Cómo desactivo otros excepto este objeto en particular?
public GameObject[] myObjs; int exceptionObj; void Start() { exceptionObj = 2; //Position of object in the array for(int i = 0; i<myObjs.Length; i++) { myObjs[i].SetActive(false); } }
public GameObject[] myObjs; int exceptionObj; void Start() { exceptionObj = 2; //Position of object in the array for(int i = 0; i<myObjs.Length; i++) { if(exceptionObj != i) myObjs[i].SetActive(false); } }
O;
public GameObject[] myObjs; int exceptionObj; void Start() { exceptionObj = 2; //Position of object in the array for(int i = 0; i<myObjs.Length; i++) { if(exceptionObj == i) continue; myObjs[i].SetActive(false); } }
O tal vez incluso simplemente reactivando al final;
public GameObject[] myObjs; int exceptionObj; void Start() { exceptionObj = 2; //Position of object in the array for(int i = 0; i<myObjs.Length; i++) { myObjs[i].SetActive(false); } myObjs[exceptionObj].SetActive(true); }
Dos caminos:
Con un si:
exceptionObj = 2; //Position of object in the array for(int i = 0; i<myObjs.Length; i++) { if (i != exceptionObj) // If not the exception ID myObjs[i].SetActive(false); }
O con dos bucles:
exceptionObj = 2; //Position of object in the array for(int i = 0; i<exceptionObj; i++) { myObjs[i].SetActive(false); } for(int i = exceptionObj+1; i<myObjs.Length; i++) { myObjs[i].SetActive(false); }