首页 > 解决方案 > Unity - Does a script's Awake() run before other scripts' Start()?

问题描述

They say Awake() is called before Start(), but they don't mention if these functions have to belong to the same script.

标签: unity3d

解决方案


他们说 Awake() 在 Start() 之前被调用,但他们没有提到这些函数是否必须属于同一个脚本。

在任何 Start() 之前调用场景中的所有 Awake( )。它们所属的脚本无关紧要。除非脚本附加到的 GameObject 在启动 Awake 期间处于非活动状态,否则在 GameObject 激活之前不会调用它。来自https://docs.unity3d.com

第一个场景加载

这些函数在场景开始时被调用(场景中的每个对象一次)。

  • Awake:这个函数总是在任何 Start 函数之前调用,并且在一个 prefab 被实例化之后。(如果游戏对象在启动期间处于非活动状态,则在激活之前不会调用 Awake。)
  • OnEnable:(仅在对象处于活动状态时调用):在对象启用后立即调用此函数。这会在创建 MonoBehaviour 实例时发生,例如在加载关卡或实例化带有脚本组件的 GameObject 时。
  • OnLevelWasLoaded:执行此函数以通知游戏已加载新关卡。

请注意,对于添加到场景中的对象,所有脚本的 Awake 和 OnEnable 函数将在为其中任何一个调用 Start、Update 等之前调用。自然,在游戏过程中实例化对象时无法强制执行此操作。

更多关于这里

顺便说一句:您没有问这个问题,但是如果出于任何原因您需要在其他脚本之前执行一些脚本,您可以查看此链接以了解如何设置脚本执行顺序(这是关于脚本的顺序,没有每个脚本中方法的顺序)


推荐阅读