我有一个游戏对象的列表,我想检查其中的每一个当前是否在现场活动。下面是我的代码。
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,然后类似于以下内容:
allActiveHazard = SceneHazard.Where(obj => obj.activeInHierarchy).ToList();但我仍然只在新列表中找到两个游戏对象。
我在这里有遗漏什么吗?提供的截图中没有其他不活跃的家长。
发布于 2022-01-08 10:36:27
在分配列表之前,我增加了几秒钟的延迟。可能有人给GameObject添加了动画。
StartCoroutine(Delay());
...
...
IEnumerator Delay()
{
yield return new WaitForSeconds(0.1f);
allActiveHazard = SceneHazard.Where(obj => obj.activeSelf).ToList();
}顺便说一句,我编辑我的代码是为了回应@derHugo评论,因为我以前做了一些排印。在协同线内分配
https://stackoverflow.com/questions/70630537
复制相似问题