我是一名C#初学者,我正在尝试在Unity中进行游戏。因此出现了一个问题:我可以检查对象的所有子级是否在场景中处于活动状态?我想用它来检查所有敌人是否活跃。
答案 0 :(得分:2)
您可以使用以下方法进行检查:
for (int i = 0; i< gameObject.transform.childCount; i++)
{
if(!gameoObject.transform.GetChild(i).gameObject.activeInHierarchy)
{
return false;
}
}
return true;
activeInHierarchy
正是您所需要的。
答案 1 :(得分:1)
由于Transform
对所有子项都实现了IEnumerable
迭代,因此您可以使用foreach
来简化循环
foreach(var child in transform)
{
if(child.gameObject.activeInHierachy) continue;
return false;
}
return true;
using System.Linq;
bool allActive = transform.Cast<Transform>().All(child => child.activeInHierachy);