【发布时间】:2023-01-26 03:45:12
【问题描述】:
我想弄清楚如何摆脱 Unity 中的 IndexOutOfRange 错误。我尝试了几种不同的方法,但我不知所措。
只是当我按下 Tab 键时,我按计划循环遍历我的游戏对象数组,但是当你到达最后一个时,它会抛出它。如果可能的话,我想让它循环回到开头。我已经为此忙了大概 2 天了。
这是我到目前为止所拥有的(我只包含了重要的变量,因为这个脚本很大)
int currentWindow = 0;
public GameObject theUI;
public GameObject[] windows;
void Update()
{
//Toggle Menu
if (Input.GetKeyDown(KeyCode.Escape))
{
if (theUI.activeInHierarchy)
{
theUI.SetActive(false);
}
else
{
theUI.SetActive(true);
windows[0].SetActive(true);
Refresh();
}
}
//Toggle Between Windows
if (theUI.activeInHierarchy)
{
if (Input.GetKeyDown(KeyCode.Tab))
{
ToggleWindow(currentWindow);
}
}
}
public void ToggleWindow(int windowNumber)
{
if (windowNumber == currentWindow)
{
windows[windowNumber].SetActive(!windows[windowNumber].activeInHierarchy);
Refresh();
currentWindow++;
windows[currentWindow].SetActive(!windows[currentWindow].activeInHierarchy);
}
}
如果有人知道该怎么做,请帮忙!我遵循了一些不同的东西,但是因为我的 windows[] 数组是一个游戏对象而不是一个 int 或其他任何东西,所以很难弄清楚如何使用其他来源修复它。
【问题讨论】: