有没有办法检查一个对象的所有孩子是不是都处于活动状态?
Posted
技术标签:
【中文标题】有没有办法检查一个对象的所有孩子是不是都处于活动状态?【英文标题】:Is there a way to check if all children of an object are active?有没有办法检查一个对象的所有孩子是否都处于活动状态? 【发布时间】:2019-12-03 20:42:47 【问题描述】:我是一名初学者 C# 编码器,我正在尝试在 Unity 中制作游戏。因此问题是:我可以检查对象的所有子对象是否在场景中处于活动状态?我想用它来检查是否所有敌人都处于活动状态。
【问题讨论】:
【参考方案1】:您可以使用以下方式检查:
for (int i = 0; i< gameObject.transform.childCount; i++)
if(!gameoObject.transform.GetChild(i).gameObject.activeInHierarchy)
return false;
return true;
activeInHierarchy
正是您所需要的。
【讨论】:
【参考方案2】:扩展Johnny's answer
由于Transform
实现了IEnumerable
遍历所有孩子,您可以更轻松地使用foreach
循环
foreach(var 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);
【讨论】:
以上是关于有没有办法检查一个对象的所有孩子是不是都处于活动状态?的主要内容,如果未能解决你的问题,请参考以下文章
检查 sessionid 已知的 PHP 会话是不是处于活动状态