I have an array of gameObjects which I can deactivate easily with a loop. However I do not want to deactivate one gameObject from the lot. So I am providing an int value which is the position of the gameObject in that array. How do I deactivate others except for this particular object?
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);
}
}
Or;
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);
}
}
Or perhaps even by simply reactivating at the end;
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);
}
Two ways:
With an if:
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);
}
Or with two loops:
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);
}