检查是否激活多个游戏对象。

3
我正在寻找一种方法来检查多个游戏对象(数字),并显示5个部分,每个部分都有3个数字,它们随机显示(0在所有部分中都是相同的)。如果第1部分中活动的数字是0,则不要在第2、3、4和5部分中再次显示0,而应在该部分(2、3、4、5)中随机选择另一个数字。这意味着我想要在场景中仅随机显示0,并且还要随机显示另一个数字。
我尝试使用下面的代码,但我不知道我缺少了什么,请帮忙看一下:

enter image description here

private GameObject[] checkfirst;

[SerializeField]
private List < GameObject > objects = new List < GameObject > ();

public GameObject firstziro;

void Start()

{

  foreach(GameObject go in checkfirst) {
    if (go.activeSelf) {

      firstziro.gameObject.SetActive(false);

      int randomlyActiveObject = UnityEngine.Random.Range(0, objects.Count);
      for (int i = 0; i < objects.Count; i++) {
        objects[i].SetActive(i == randomlyActiveObject);
      }
    } else {

      firstziro.gameObject.SetActive(true);
      foreach(GameObject d in objects) {
        d.gameObject.SetActive(false);
      }

    }
  }

3
我认为您需要稍微澄清一下问题,以便人们帮助您。现在它有点难以理解。我建议将其分成期望的行为、我尝试过什么以及出了什么问题。 - Adam B
不清楚他想要什么。 - Hasnain Shaukat
1个回答

2
不要检查所有五个部分,只检查随机之前的部分。创建一个脚本来检查这个部分,而另一个脚本则用于随机选择0。 enter image description here
[SerializeField] 
  private List<GameObject> objects = new List<GameObject>(); 





public GameObject five; 

  void Start() 
  { 
      if( five.gameObject.activeSelf) 
      { 
           
foreach (GameObject g in objects) 
{ 
  g.gameObject.SetActive(false); 
} 

      } 
      else{ 
              int randomlyActiveObject = UnityEngine.Random.Range(0, objects.Count); 
for (int i = 0; i < objects.Count; i++) 
{ 
  objects[i].SetActive(i == randomlyActiveObject); 
} 
} 


      } 
  }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接