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.

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

Unity跑在Awake之前的方法的更多相关文章

  1. Unity中让Update中的方法执行一次

    Unity中让Update中的方法执行一次 Unity中,很多时候,代码需要放在Update中时刻监测状态,一旦状态符合,又只需要代码执行一次:其实可以通过设置控制量的方式,让代码只执行一次:方法:设 ...

  2. Unity、c#中的拓展方法讲解

    很早以前看过这个东西,但是没有真正的用到过,希望之后会用到上面的方法, 大概的意思是这样的c#中尤其在用Unity的时候,已有的框架提供给我们一些固定的方法,但是有时我们想对这些方法进行修改, 这时我 ...

  3. Tip8:Unity中诸如 Awake() Start() Update()等函数的 执行顺序

    Unity脚本中有很多的事件函数,下面是各种函数的执行顺序: 1.reset(); 2.Awake(); 3.OnEnable; 4.OnLevelWasLoaded(); 5.Start(); 6. ...

  4. 使用Unity拦截一个返回Task的方法

    目标 主要是想为服务方法注入公用的异常处理代码,从而使得业务代码简洁.本人使用Unity.Interception主键来达到这个目标.由于希望默认就执行拦截,所以使用了虚方法拦截器.要实现拦截,需要实 ...

  5. Unity3d不支持vistual studio2012?用vs2012打开unity c#脚本进行编码的方法。

    unity3d是支持vs2010的,但是有很多开发者反应,unity3d中的C#脚本不能用vs2012打开.我想了一下,先进入存放C#脚本的目录,在设置里面C#文件的打开方式,选择用vs2012打开, ...

  6. Unity中使物体自动寻路的方法

    在做一个FPS游戏时,需要敌方自动找到玩家方位并向玩家移动,在查找资料(并走了不少坑)后,我试了三个方法,经测试,这三个方法都能实现自动寻路功能. 方法一:使用Mathf.Lerp()方法 代码很简单 ...

  7. [Unity WWW] 跨域访问解决方法

    什么是跨域访问 域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即Trust Relation).信任关系是连接在域与域之间的桥梁.当一个域与其他域建立了信任 ...

  8. RF实现多次失败重跑结果合并的基础方法和优化方法

    实现思路:通过分次执行失败案例重跑,然后通过结果文件合并命令实现多次失败重跑结果文件的合并,并输出合并后的log和report文件: 说明:具体失败案例重跑命令和结果文件合并命令请参考本博客其他相关章 ...

  9. 【Unity笔记】Awake()和Start()的区别

    Awake在MonoBehavior创建后就立刻调用,Start将在MonoBehavior创建后在该帧Update之前,在该Monobehavior.enabled == true的情况下执行. v ...

  10. C#正则表达式引发的CPU跑高问题以及解决方法

    3月23日(周日)下午16:30左右,博客园主站负载均衡中的2台Web服务器CPU玩起了爬楼梯的游戏(见上图),一直爬到了接近100%.发现这个状况后,我们立即将这2台阿里云临时磁盘云服务器从负载均衡 ...

随机推荐

  1. c语言求输入的任一整数的各位数之和

    c语言求解代码: # include<stdio.h> int main(void){ int a,i=0,sum=0; scanf("%d",&a); if( ...

  2. jupyter notebook使用相对路径的方法

    在当前文件夹路径下开启jupyter notebook 这样就可以直接使用相对路径了,而不用管绝对路径这一令人心烦的问题 首先需要重新安装PowerShell 下载链接:https://cloud.1 ...

  3. mybatis一对多映射分页的问题

    一对多可能会出现分页错误 条数不对的问题 解决方法: 将主表分页查询一次 SELECT aa.id,aa.name,bb.name FROM (SELECT * from tab1 ORDER BY ...

  4. 【网络】安装Nginx笔记

    目录 前言 安装前先更新下 安装依赖库 下载Nginx Nginx编译配置 编译&安装&验证nginx Nginx服务配置 配置SSL 参考 前言 up安装nginx主要是为了在服务器 ...

  5. Quartz的使用

    Quartz的使用 可以下载该项目进行测试查看:https://gitee.com/zhou-jiahao/quartz_demoq 1 初始Quartz 如果你的定时任务没有分布式需求,但需要对任务 ...

  6. 【云原生 · Kubernetes】Kubernetes容器云平台部署与运维

    [题目1]Deployment管理 在master节点/root目录下编写yaml文件nginx-deployment.yaml,具体要求如下: (1)Deployment名称:nginx-deplo ...

  7. Scala- Cannot run program "powershell.exe": CreateProcess error=5, 拒绝访问

    安装scala后,按照官网的helloworld教程学习执行 sbt new scala/hello-world.g8 的时候,出现下图错误. 解决方案:关闭360

  8. Velocity模板引擎的的使用示例(入门级)

    简单说下这个引擎的两个分支(虽然语言不同调用方法大同小异): 1.Java平台下的:org.apache.velocity 2..Net平台下的:NVelocity 注:本文章不涉及到后端只说模板的使 ...

  9. 关于python函数传参

    必须参数 最常见的传参 def say(arg): print(arg) say("Hello world") 输出: Hello world 默认参数 def say(arg, ...

  10. 重新认识下JVM级别的本地缓存框架Guava Cache(3)——探寻实现细节与核心机制

    大家好,又见面了. 本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面.如果感兴趣,欢迎关注以获取后续更新. 通过<重新认识下JVM级别的本地 ...