我有6个面板当前效果正在显示。如果效果量为0,我希望它们全部消失。 effectOff()
取消所有面板和效果图像。六个面板分别有六个儿童效果图像。 (蓝色,绿色,红色等)。代码应该使所有这些代码都被停用。
public GameObject effectbar;
public void effectOff()
{
for (int i = 0; i < 6; i++)
{
for (int a = i; i < 6; i++)
{
effectbar.gameObject.transform.GetChild(i).GetChild(a).gameObject.SetActive(false);
}
effectbar.gameObject.transform.GetChild(i).gameObject.SetActive(false);
}
effectbar.SetActive(false);
}
effectbar.gameObject.transform.GetChild(i).gameObject.SetActive(false);
行提供Transform child out of bounds
例外。我该如何解决这个问题?我读到它会抛出一个错误,因为系统不知道子对象是否确实存在。谢谢你的转发。
答案 0 :(得分:3)
假设effectBar
是所有面板的父级,您只能写这一行:
effectbar.SetActive(false);
由于effectbar
是父级,因此它也会自动停用子级。
答案 1 :(得分:0)
你的内循环正在递增i
,因此当内循环结束时i
为6
,之后外循环中的调用会触发,但是你的i
现在已经出界了。
你可能想要一个不同的变量递增你的内循环,或者其他一些根据你需要的东西起作用。