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

时间:2019-03-17 03:10:43

标签: unity3d

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

2 个答案:

答案 0 :(得分:5)

  

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

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

第一个场景加载

这些功能在场景启动时被调用(场景中的每个对象一次)。

  • 唤醒:始终在调用任何“开始”功能和 也在实例化预制件之后。 (如果GameObject是 在启动过程中处于非活动状态Awake直到完成后才被调用 活跃。)
  • OnEnable :(仅在对象处于活动状态时调用):此函数是 启用对象后立即调用。当 创建MonoBehaviour实例,例如在加载关卡或 具有脚本组件的GameObject实例化。
  • OnLevelWasLoaded :执行此功能是为了通知游戏 新级别已加载。

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

有关此here

的更多信息

顺便说一句:您没有问过这个问题,但是如果出于某种原因您需要先执行一些脚本,则可以查看此link来了解如何设置脚本的执行顺序(这与脚本的顺序有关,而与每个脚本内的方法的顺序无关)

答案 1 :(得分:0)

我的实验显示场景中的所有Awake()在所有Start()之前执行。

我创建了10个脚本并将它们分别放在10个游戏对象上。

enter image description here