离开一个游戏对象,从数组中停用其他游戏对象

时间:2021-03-24 09:01:32

标签: c# unity3d

我有一个游戏对象数组,我可以通过循环轻松停用它们。但是,我不想从该批次中停用一个游戏对象。所以我提供了一个 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);
   }
}

2 个答案:

答案 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)

两种方式:

  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);
    }
    
  2. 或者有两个循环:

    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);
    }