我有一个游戏对象数组,我可以通过循环轻松停用它们。但是,我不想从该批次中停用一个游戏对象。所以我提供了一个 int 值,它是游戏对象在该数组中的位置。我如何停用除此特定对象之外的其他对象?
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);
}
}
答案 0 :(得分:1)
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);
}
}
或者;
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);
}
}
或者甚至可能只是在最后重新激活;
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);
}
答案 1 :(得分:1)
两种方式:
如果:
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);
}
或者有两个循环:
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);
}