【发布时间】:2019-03-17 03:10:43
【问题描述】:
他们说 Awake() 在 Start() 之前被调用,但他们没有提到这些函数是否必须属于同一个脚本。
【问题讨论】:
标签: unity3d
他们说 Awake() 在 Start() 之前被调用,但他们没有提到这些函数是否必须属于同一个脚本。
【问题讨论】:
标签: unity3d
他们说 Awake() 在 Start() 之前被调用,但他们没有提到是否 这些函数必须属于同一个脚本。
场景中的所有 Awake() 在任何 Start() 之前调用。它们所属的脚本无关紧要。除非脚本附加到的 GameObject 在启动 Awake 期间处于非活动状态,否则在 GameObject 激活之前不会调用它。来自https://docs.unity3d.com:
这些函数在场景开始时被调用(场景中的每个对象一次)。
请注意,对于添加到场景中的对象,所有脚本的 Awake 和 OnEnable 函数将在为其中任何一个调用 Start、Update 等之前调用。当然,在游戏过程中实例化对象时无法强制执行此操作。
更多关于这个here
顺便说一句:您没有问过这个问题,但是如果出于任何原因您需要在其他脚本之前执行某些脚本,您可以查看link 以了解如何设置脚本执行顺序(这是关于脚本的顺序,不是每个脚本内部方法的顺序)
【讨论】:
Awake和OnEnable是一个接一个的调用。所以除了我一开始想的以外,OnEnable 在 all Awake 完成后不会被调用,而是一起为一个脚本调用,所以在OnEnable 中不能依赖其他脚本Awake。跨度>