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

问题描述 投票:0回答:2

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

c# unity-game-engine gameobject
2个回答
5
投票

您可以使用以下方式检查:

for (int i = 0; i< gameObject.transform.childCount; i++)
{
    if(!gameoObject.transform.GetChild(i).gameObject.activeInHierarchy)
    {
        return false;
    }
}
return true;

activeInHierarchy
正是您所需要的。


3
投票

扩展约翰尼的回答

由于

Transform
实现了
IEnumerable
迭代所有子项,您可以使用
foreach

更轻松地循环
foreach(Transform child in transform) 
{ 
    if(child.gameObject.activeInHierachy) continue;

    return false;
}
return true;

或使用

Linq Cast
Linq All

using System.Linq;


bool allActive = transform.Cast<Transform>().All(child => child.activeInHierachy);
© www.soinside.com 2019 - 2024. All rights reserved.