【发布时间】:2022-04-24 20:42:43
【问题描述】:
我想停止我的脚本中的代码,直到它找到一个游戏对象,然后继续。
我在 Start Method 中使用以下代码进行了尝试:
yield return new WaitUntil(() => GameObject.Find("Ball1"));
GameObject.Instantiate ...
但这不起作用(从不实例化我的游戏对象)
有谁知道我做错了什么或有其他想法?
【问题讨论】:
-
每帧寻找一个游戏对象对性能非常不利。哪个脚本创建了你的球?我会使用property 来存储对您要查找的对象的引用。然后,实例化球的脚本将设置该属性的值。然后,在您的协程中,只需检查对对象的引用是否不为空。
-
你的代码没问题。它应该等到在场景中找到 "Ball1" 对象。因此,如果您从另一个脚本实例化一个对象并将其重命名为 "Ball1",则该等待应该退出。在你说“它不起作用”之前,请在该行代码之前和之后使用
Debug.Log,看看究竟是什么失败了。还要查看 Hierarchy 选项卡,确保有一个实际名为 "Ball1" 的 Object,它是 active。如果对象不活跃,GameObject.Find找不到它。 -
回答:“是的,但请不要。”