【问题标题】:In Unity, is Awake() called before the game starts or before the scene starts?在 Unity 中,是在游戏开始之前还是在场景开始之前调用 Awake()?
【发布时间】:2017-01-25 08:50:40
【问题描述】:

我在 Unity 文档中读到了这个:

在加载脚本实例时调用 Awake。

Awake 用于初始化任何变量或游戏状态之前 游戏开始。

这不是矛盾吗? Awake() 函数是在游戏启动时调用,还是在脚本所在场景加载时调用?

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    如果您了解 Unity3D 中的 Execution Order of Events,则并非如此。

    一个游戏可以包含一个或多个场景。

    因此,如果加载了场景,则序列为:

    • Awake() - 非常适合初始化变量。 还要考虑 GameObject 在启动 Awake 期间是否处于非活动状态,在此对象激活之前不会调用它的 Awake 方法(感谢 @Everts)。

    • Start() - 启动您的核心游戏逻辑,因为所有其他活动的GameObjectAwake() 方法都被调用。

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

    你要澄清的是这个术语:

    ..比赛开始前..

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

    【讨论】:

    • 你说得对,我对这个词不是很清楚。谢谢。
    • Game 这个词就像Component。它可能意味着一切,具体取决于上下文。 ;)
    • 这只是部分答案。您还应该评估在运行时创建的对象、在 Awake 中创建和停用的对象、在编辑器中处于非活动状态的对象等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    • 2016-04-15
    相关资源
    最近更新 更多