unity3d - 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.
解决方案
他们说 Awake() 在 Start() 之前被调用,但他们没有提到这些函数是否必须属于同一个脚本。
在任何 Start() 之前调用场景中的所有 Awake( )。它们所属的脚本无关紧要。除非脚本附加到的 GameObject 在启动 Awake 期间处于非活动状态,否则在 GameObject 激活之前不会调用它。来自https://docs.unity3d.com:
第一个场景加载
这些函数在场景开始时被调用(场景中的每个对象一次)。
- Awake:这个函数总是在任何 Start 函数之前调用,并且在一个 prefab 被实例化之后。(如果游戏对象在启动期间处于非活动状态,则在激活之前不会调用 Awake。)
- OnEnable:(仅在对象处于活动状态时调用):在对象启用后立即调用此函数。这会在创建 MonoBehaviour 实例时发生,例如在加载关卡或实例化带有脚本组件的 GameObject 时。
- OnLevelWasLoaded:执行此函数以通知游戏已加载新关卡。
请注意,对于添加到场景中的对象,所有脚本的 Awake 和 OnEnable 函数将在为其中任何一个调用 Start、Update 等之前调用。自然,在游戏过程中实例化对象时无法强制执行此操作。
更多关于这里
顺便说一句:您没有问这个问题,但是如果出于任何原因您需要在其他脚本之前执行一些脚本,您可以查看此链接以了解如何设置脚本执行顺序(这是关于脚本的顺序,没有每个脚本中方法的顺序)
推荐阅读
- node.js - Nodejs访问本地网络上的共享文件夹,根目录问题
- django - 解决django模板不存在的问题
- vagrant - 如何指定在 Vagrant 中下载到 Virtualbox VM 的 salt 版本?
- java - java for循环性能差异
- python - np.angle 返回的相位不准确
- angular - 如何正确配置代理以在 Angular/Spring Boot 中发出发布请求
- python - 内存泄漏的生成器
- google-colaboratory - 如何在 Google Colab 中将 cuDNN 从 v8.0 降级到 v6.0?
- javascript - 继续订阅一系列主题
- node.js - 我们可以在 cloudinary 上更新上传的图像吗?