pho*_*van 38 unity-game-engine
我看到,我们可以在初始化变量Awake()或Start()和 Awake()会之前调用Start().
我们什么时候应该初始化Awake并Start获得最佳性能?
Min*_*aut 39
通常,Awake()用于初始化某些值或脚本是否相互依赖,如果其中一个值初始化得太晚(在游戏开始之前唤醒,则会导致错误).每个脚本实例也只调用一次唤醒.
让我引用文档:
[...]在初始化所有对象后调用Awake,以便您可以安全地与其他对象对话或使用例如查询它们.GameObject.FindWithTag.每个GameObject的Awake都是在对象之间以随机顺序调用的.因此,您应该使用Awake在脚本之间设置引用,并使用Start()来回传递任何信息.在任何Start功能之前总是调用Awake.这允许您订购脚本的初始化.觉醒不能作为协程.
和Start():
在第一次调用任何Update方法之前启用脚本时,在帧上调用Start.
与Awake函数一样,Start在脚本的生命周期中只调用一次.但是,无论脚本是否已启用,都会在初始化脚本对象时调用Awake.如果在初始化时未启用脚本,则可能无法在与唤醒相同的帧上调用Start.
最后一部分产生了很大的不同
为了得到你的问题:
如果脚本不是在你的游戏开始启用,而你并不需要初始化变量,开始将节能性能为苏醒(),无论将被称为......
每一个变量会在一开始就被初始化.至少这是我做出的逻辑假设.
Awake相当于演员。如果对象处于活动状态,则在创建 MonoBehaviour 时调用它,然后在任何其他方法之前调用它。
Start 在 MonoBehaviour 第一次激活时运行。这可能是在“觉醒”之后不久,也可能是在很久之后。这允许执行与应用程序或对象的当前状态相关的操作。
例如,您创建了一个敌人,在“唤醒”中,您放置了基本初始化的所有内容。然后,敌人在觉醒结束时被停用。稍后,敌人即将被激活,但如果玩家拥有某种特定武器,您希望将其变为红色,那么您可以在“开始”中执行此操作。
重要提示:如果创建了预制件并且预制件中的游戏对象默认处于关闭状态,则在设置为打开状态之前不会调用 Awake。在预制件可能关闭的池创建情况下,唤醒是在第一次激活池对象时发生的。
OnEnable 与 Start 类似,但在每次 SetActive(true) 时发生,如果启用则在启动时发生。例如,这可能是您的敌人愿意根据玩家的麦格纳改变关卡颜色的候选者。
| 归档时间: |
|
| 查看次数: |
26131 次 |
| 最近记录: |