Unity跑在Awake之前的方法
作者:互联网
Unity跑在Awake之前的方法
一、前言
相信大家和小黑一样,在写项目的时候遇到过以下这中情况:
____两个脚本的Awake中,都有获取信息的函数被调用。可是A脚本在B脚本获取到信息之后,才可以正常执行某个函数,可是B脚本却跑在A脚本之前,这可怎么办呢?
接下来小黑告诉大家几个非常实用的办法!
二、实际操作
方法1:在Unity的Script Excution Order中设置脚本执行顺序
1:找到Script Excution Order并且打开
具体位置:Edit > Project > Script Excution Order ;下面上图
2:在Script Excution Order中设置脚本顺序
在Script Excution Order中,我们把A脚本放到B脚本之前去,这样子就可以解决问题啦。
3:到现在我们的方法1就结束了。
这个解决办法, 还需要我们手动去设置,该是哪一个脚本在前执行。
那还有方法二等着我们去探索!,出发~
方法2:来重点了,写脚本!告诉你们一个跑的比Awake都快的办法!
1:告诉你们一个特性:[RuntimeInitializeOnLoadMethod]
对于这个特性,我相信大部分人还不知道呢,所以我要把它分享出来,以后大家一起用;
为什么我说它比Awake还快呢,是因为我在看到后做了测试,所以我要把测试也分享出来~
①:我们编写带Awake的脚本,它是继承着MonoBehaviour,并且需要挂在物体上
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test0 : MonoBehaviour
{
void Awake()
{
print("Awake快");
}
}
②:编写带 [RuntimeInitializeOnLoadMethod] 的脚本,它可以不用继承MonoBehaviour
且要记住,我们用的是:
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test1
{
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
static void Function()
{
Debug.LogError("RuntimeInitializeOnLoadMethod快");
}
}
③:我们启动程序:
铛铛铛铛~!
看到结果了吧,跑的比Awake都快,小伙伴你们Get到了么
方法3:Reset
根绝官方提供的生命周期表中官方链接,有一个函数Reset,在Awake的上边,不过小黑公司用的是Unity5.6.1,我还没做测试。。这个就由大家去测试吧,测试结果记得告诉小黑一声;
至此,小黑今天的分享就要结束啦,我们明天见
!!
!!
帅哥or美女,请等一下,有个事请忘了和你说了,呢个(扭捏中~~~~~~~给小黑点个赞呗 ♥♥♥♥♥♥♥♥♥)
什么?你需要优化? Unity项目优化——Web版
啥?你需要和后台对接加载?Unity打包资源,后台加载
程序的道路上学习永不停止,探索随时进行。
Let’s go. Just do it. We can.
好了客官,点个赞再走吧~~~
标签:脚本,Script,之前,Unity,Awake,Excution,using 来源: https://blog.csdn.net/Wenhao_China/article/details/100729218