【发布时间】:2016-11-16 06:06:37
【问题描述】:
在我的代码中,我需要找到一个孩子的孩子的孩子。
只有第一个孩子永远是同一个孩子,但孩子的孩子在 4 个不同的可能预制件之间随机分配。
我想在最后一个孩子上禁用它的图像。
如果孩子不会在其他人之间随机分配,这将是理想的代码:
protected void SetUnpickedPrizesVisibility(bool isVisible)
{
foreach (var element in list)
{
if (!element.IsPicked)
{ element.transform.FindChild("FirstChild").FindChild("SecondChild").FindChild("ThirdChild").GetComponent<Image>().enabled = false;
}
}
}
但是,由于 SecondChild 各不相同,我不能简单地这样做。
这是我唯一的选择吗?
protected void SetUnpickedPrizesVisibility(bool isVisible)
{
foreach (var element in list)
{
if (!element.IsPicked)
{
if(element.transform.FindChild("FirstChild").FindChild("SecondChild1"))
element.transform.FindChild("FirstChild").FindChild("SecondChild1").FindChild("ThirdChild").GetComponent<Image>().enabled = false;
if(element.transform.FindChild("FirstChild").FindChild("SecondChild2"))
element.transform.FindChild("FirstChild").FindChild("SecondChild2").FindChild("ThirdChild").GetComponent<Image>().enabled = false;
if(element.transform.FindChild("FirstChild").FindChild("SecondChild3"))
element.transform.FindChild("FirstChild").FindChild("SecondChild3").FindChild("ThirdChild").GetComponent<Image>().enabled = false;
}
}
}
还是有人有不同的想法?
我知道这是一个非常难以阅读的问题,但我已尽力简化它。
谢谢,
【问题讨论】:
-
让您的孩子去做:创建一个脚本并将其附加到列表中的每个元素,以便他们可以根据您的
IsPicked检查自行启用/禁用。无需从不同的脚本中遍历所有这些。
标签: c# image unity3d parent-child