C# 有没有办法检查对象的所有子对象是否都处于活动状态?

C# 有没有办法检查对象的所有子对象是否都处于活动状态?,c#,unity3d,gameobject,C#,Unity3d,Gameobject,我是一名C#coder初学者,我正试图在Unity中制作一个游戏。因此,问题是:我是否可以检查对象的所有子对象在场景中是否都处于活动状态?我想用它来检查所有敌人是否都在活动。你可以用以下方法检查: for (int i = 0; i< gameObject.transform.childCount; i++) { if(!gameoObject.transform.GetChild(i).gameObject.activeInHierarchy) { ret

我是一名C#coder初学者,我正试图在Unity中制作一个游戏。因此,问题是:我是否可以检查对象的所有子对象在场景中是否都处于活动状态?我想用它来检查所有敌人是否都在活动。

你可以用以下方法检查:

for (int i = 0; i< gameObject.transform.childCount; i++)
{
    if(!gameoObject.transform.GetChild(i).gameObject.activeInHierarchy)
    {
        return false;
    }
}
return true;
for(int i=0;i
这正是您所需要的。

由于通过所有子项实现迭代签名,因此可以使用
foreach

foreach(var child in transform) 
{ 
    if(child.gameObject.activeInHierachy) continue;

    return false;
}
return true;
或使用和

使用System.Linq;
bool allActive=transform.Cast().All(child=>child.activeInHierachy);
using System.Linq;


bool allActive = transform.Cast<Transform>().All(child => child.activeInHierachy);