首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查游戏对象的列表是否有活动的游戏对象并插入到其他列表中

检查游戏对象的列表是否有活动的游戏对象并插入到其他列表中
EN

Stack Overflow用户
提问于 2022-01-08 07:51:17
回答 1查看 93关注 0票数 0

我有一个游戏对象的列表,我想检查其中的每一个当前是否在现场活动。下面是我的代码。

代码语言:javascript
复制
foreach (GameObject hazard in SceneHazard)
{
    //Check if hazard exist in the scene
    Debug.Log(hazard.name);

    if (hazard.activeInHierarchy)
    {
        Debug.Log(" is active");
        allActiveHazard.Add(hazard);
    }
    else
    {
        Debug.Log(" is NOT active");
    }
}

我还找到了其他解决方案,我已经应用了:https://stackoverflow.com/a/65934000/9425428,然后类似于以下内容:

代码语言:javascript
复制
allActiveHazard = SceneHazard.Where(obj => obj.activeInHierarchy).ToList();

但我仍然只在新列表中找到两个游戏对象。

在检查器中的变量分配,底部的两个列表是私有的。

层次结构中的活动游戏对象

控制台,不知怎么有些游戏对象没有被检查?

我在这里有遗漏什么吗?提供的截图中没有其他不活跃的家长。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-08 10:36:27

在分配列表之前,我增加了几秒钟的延迟。可能有人给GameObject添加了动画。

代码语言:javascript
复制
StartCoroutine(Delay());

...
...

IEnumerator Delay()
{
    yield return new WaitForSeconds(0.1f);
    allActiveHazard = SceneHazard.Where(obj => obj.activeSelf).ToList();
}

顺便说一句,我编辑我的代码是为了回应@derHugo评论,因为我以前做了一些排印。在协同线内分配

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70630537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档