时间:2019-02-22 23:55:56

标签: c# arrays unity3d

我的问题是在播放模式内,我得到了预期的数组序列:showing all gameobjects, RedCube, Interior, BlueCube, and then GreenCube。但是,在我构建它并在Android中进行测试之后。我得到了另一个数组序列:showing all gameobjects, GreenCube, BlueCube, RedCube and then Interior。此屏幕快照显示了我的数组的顺序。image0
 游戏对象下有4个游戏对象-Levels Image1。为Levels ....... Image2完整的场景截图添加了脚本。

public GameObject[] levels;
public Button levelBtn;
int i = 0;

private void Awake()
{
    levels = GameObject.FindGameObjectsWithTag("levels");

    Button btn = levelBtn.GetComponent<Button>();

}

// Start is called before the first frame update
void Start()
{
    levelBtn.onClick.AddListener(onLevelclick);
}

public void onLevelclick()
{
    if (i < levels.Length - 1)
    {
        i++;
    }
    else if (i >= levels.Length - 1)
    {
        i = 0;
    }
    Debug.Log(i);

    if (i == 0)
    {
        levels[0].SetActive(true);
        levels[1].SetActive(true);
        levels[2].SetActive(true);
        levels[3].SetActive(true);

    }
    else if (i == 1)
    {
        levels[0].SetActive(true);
        levels[1].SetActive(false);
        levels[2].SetActive(false);
        levels[3].SetActive(false);
    }
    else if (i == 2)
    {
        levels[0].SetActive(true);
        levels[1].SetActive(true);
        levels[2].SetActive(false);
        levels[3].SetActive(false);
    }
    else if (i == 3)
    {
        levels[0].SetActive(true);
        levels[1].SetActive(true);
        levels[2].SetActive(true);
        levels[3].SetActive(false);
    }
}

在此脚本中,我有一个gameobject array。当我单击UIbutton时,它将在array.length ....中循环。...但是数组顺序不同于playmode并已构建。我不知道为什么?

1 个答案:

答案 0 :(得分:1)

如果您在统一检查器中将游戏对象分配给levels(例如image0),则不需要此行。

levels = GameObject.FindGameObjectsWithTag("levels");