ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Unity跑在Awake之前的方法

2019-09-11 20:07:16  阅读:13  来源: 互联网

标签:脚本 Script 之前 Unity Awake Excution using



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快");
    }
}
③:我们启动程序:

Console面板

铛铛铛铛~!

看到结果了吧,跑的比Awake都快,小伙伴你们Get到了么

方法3:Reset

根绝官方提供的生命周期表中官方链接,有一个函数Reset,在Awake的上边,不过小黑公司用的是Unity5.6.1,我还没做测试。。这个就由大家去测试吧,测试结果记得告诉小黑一声;
Unity脚本生命周期

至此,小黑今天的分享就要结束啦,我们明天见

!!

!!

帅哥or美女,请等一下,有个事请忘了和你说了,呢个(扭捏中~~~~~~~给小黑点个赞呗 ♥♥♥♥♥♥♥♥♥)

什么?你需要优化? Unity项目优化——Web版

啥?你需要和后台对接加载?Unity打包资源,后台加载

程序的道路上学习永不停止,探索随时进行。
Let’s go. Just do it. We can.

好了客官,点个赞再走吧~~~



标签:脚本,Script,之前,Unity,Awake,Excution,using

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有