Unity-脚本的Awake()是否在其他脚本的Start()之前运行?

Min*_*ang 1 unity-game-engine

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

Ign*_*rre 5

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

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

第一场景加载

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

  • 唤醒:始终在任何启动功能之前以及实例化预制之后立即调用此功能。(如果GameObject在启动过程中处于非活动状态,则直到激活它为止,才会调用Awake。)
  • OnEnable:(仅在对象处于活动状态时才调用):启用对象后立即调用此函数。当创建MonoBehaviour实例时,例如在加载关卡或实例化带有脚本组件的GameObject时,会发生这种情况。
  • OnLevelWasLoaded:执行此功能以通知游戏已加载新的关卡。

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

更多关于此这里

顺便说一句:您没有询问此问题,但是如果出于某种原因需要先执行一些脚本,则可以检查此链接以了解如何设置脚本执行顺序(这是有关脚本的顺序) ,每个脚本中的方法没有顺序)