有没有办法检查对象的所有子对象是否都处于活动状态?
Is there a way to check if all children of an object are active?
我是一名初学者 C# 编码员,我正在尝试在 Unity 中制作游戏。因此问题是:我可以检查一个对象的 所有 个子对象是否在场景中处于活动状态吗?我想用它来检查是否所有敌人都处于活动状态。
您可以使用以下方法检查:
for (int i = 0; i< gameObject.transform.childCount; i++)
{
if(!gameoObject.transform.GetChild(i).gameObject.activeInHierarchy)
{
return false;
}
}
return true;
activeInHierarchy
正是您所需要的。
正在扩展
由于 Transform
implements 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);
我是一名初学者 C# 编码员,我正在尝试在 Unity 中制作游戏。因此问题是:我可以检查一个对象的 所有 个子对象是否在场景中处于活动状态吗?我想用它来检查是否所有敌人都处于活动状态。
您可以使用以下方法检查:
for (int i = 0; i< gameObject.transform.childCount; i++)
{
if(!gameoObject.transform.GetChild(i).gameObject.activeInHierarchy)
{
return false;
}
}
return true;
activeInHierarchy
正是您所需要的。
正在扩展
由于 Transform
implements 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);