当前位置:  开发笔记 > 前端 > 正文

醒来()和开始()

如何解决《醒来()和开始()》经验,为你挑选了2个好方法。

我看到,我们可以在初始化变量Awake()Start()Awake()会之前调用Start().

我们什么时候应该初始化AwakeStart获得最佳性能?



1> Minzkraut..:

通常,Awake()用于初始化某些值或脚本是否相互依赖,如果其中一个值初始化得太晚(在游戏开始之前唤醒,则会导致错误).每个脚本实例也只调用一次唤醒.

让我引用文档:

[...]在初始化所有对象后调用Awake,以便您可以安全地与其他对象对话或使用例如查询它们.GameObject.FindWithTag.每个GameObject的Awake都是在对象之间以随机顺序调用的.因此,您应该使用Awake在脚本之间设置引用,并使用Start()来回传递任何信息.在任何Start功能之前总是调用Awake.这允许您订购脚本的初始化.觉醒不能作为协程.

和Start():

在第一次调用任何Update方法之前启用脚本时,在帧上调用Start.

与Awake函数一样,Start在脚本的生命周期中只调用一次.但是,无论脚本是否已启用,都会在初始化脚本对象时调用Awake.如果在初始化时未启用脚本,则可能无法在与唤醒相同的帧上调用Start.

最后一部分产生了很大的不同

为了得到你的问题:

如果脚本不是在你的游戏开始启用,而你并不需要初始化变量,开始将节能性能为苏醒(),无论将被称为......
每一个变量会在一开始就被初始化.至少这是我做出的逻辑假设.


请注意,如果GameObject处于非活动状态,Unity当前将不再调用Awake()。这是调用函数的流程图。https://docs.unity3d.com/Manual/ExecutionOrder.html

2> Sergii Zhevz..:

官方文档(AwakeStart)中对该主题进行了很好的描述。

本节描述了为什么您可能需要两个功能:

Awake调用任何对象的Start函数之前,会对场景中的所有对象调用该函数。在对象A的初始化代码需要依赖于对象B已经被初始化的情况下,这一事实很有用。B的初始化应在中完成,Awake而A 的初始化应在中完成Start

之间的区别Awake,并Start是,Start只有当一个脚本称为启用

这两个函数在第Update一种方法之前被调用,它们之间没有性能差异。我会说它Awake用于初始化所有对象(如构造函数),并Start用于链接对象或在游戏开始之前做一些事情。

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有