在 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() - 启动您的核心游戏逻辑,因为所有其他活动的GameObjectAwake() 方法都被调用。

第一个Update()呼叫等等......

你要澄清的是这个术语:

..比赛开始前..

这意味着在您的游戏逻辑开始之前。

【讨论】:

你说得对,我对这个词不是很清楚。谢谢。 Game 这个词就像Component。它可能意味着一切,具体取决于上下文。 ;) 这只是部分答案。您还应该评估在运行时创建的对象、在 Awake 中创建和停用的对象、在编辑器中处于非活动状态的对象等。

以上是关于在 Unity 中,是在游戏开始之前还是在场景开始之前调用 Awake()?的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D场景切换UGUI组件事件开始游戏与关闭游戏

unity场景制作方式?

unity webgl打包游戏一开始灰屏太久怎么解决?

unity3D做的翻纸牌消除游戏

Unity Android build 随机崩溃

1.2 从0开始学Unity游戏开发--运行原理