在 Unity 中,是在游戏开始之前还是在场景开始之前调用 Awake()?
Posted
技术标签:
【中文标题】在 Unity 中,是在游戏开始之前还是在场景开始之前调用 Awake()?【英文标题】:In Unity, is Awake() called before the game starts or before the scene starts? 【发布时间】:2017-01-25 08:50:40 【问题描述】:我在 Unity 文档中读到了这个:
在加载脚本实例时调用 Awake。
Awake 用于初始化任何变量或游戏状态之前 游戏开始。
这不是矛盾吗? Awake() 函数是在游戏启动时调用,还是在脚本所在场景加载时调用?
【问题讨论】:
【参考方案1】:如果您了解 Unity3D 中的 Execution Order of Events,则并非如此。
一个游戏可以包含一个或多个场景。
因此,如果加载了场景,则序列为:
Awake()
- 非常适合初始化变量。 还要考虑 GameObject
在启动 Awake 期间是否处于非活动状态,在此对象激活之前不会调用它的 Awake 方法(感谢 @Everts)。
Start()
- 启动您的核心游戏逻辑,因为所有其他活动的GameObject
的Awake()
方法都被调用。
第一个Update()
呼叫等等......
你要澄清的是这个术语:
..比赛开始前..
这意味着在您的游戏逻辑开始之前。
【讨论】:
你说得对,我对这个词不是很清楚。谢谢。Game
这个词就像Component
。它可能意味着一切,具体取决于上下文。 ;)
这只是部分答案。您还应该评估在运行时创建的对象、在 Awake 中创建和停用的对象、在编辑器中处于非活动状态的对象等。以上是关于在 Unity 中,是在游戏开始之前还是在场景开始之前调用 Awake()?的主要内容,如果未能解决你的问题,请参考以下文章