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. 多项式回归 & pipeline & 学习曲线 & 交叉验证

    多项式回归就是数据的分布不满足线性关系,而是二次曲线或者更高维度的曲线.此时只能使用多项式回归来拟合曲线.比如如下数据,使用线性函数来拟合就明显不合适了. 接下来要做的就是升维,上面的真实函数是:$ ...

  2. Day03.2:Java的基础语法

    Java基础语法 注释 (注释不会被运行,仅仅作为解释或笔记提供给作者帮助回忆) 单行注释格式:// 多行注释格式: /**/ 文档注释格式:/** */ 示例图 标识符 概念:所有的组成部分都需要名 ...

  3. echarts标题(title)配置

    var option = {         //标题         title : {             show:true,//显示策略,默认值true,可选为:true(显示) | fa ...

  4. springboot前端向后端请求返回html语句

    后端接口代码 @PostMapping("/service/confirmPay") @ResponseBody public GlobalResponse confirmPay( ...

  5. 【翻译】Spring Security - 如何解决WebSecurityConfigurerAdapter类已被弃用的问题?

    原文链接:Spring Security - How to Fix WebSecurityConfigurerAdapter Deprecated 原文作者:Nam Ha Minh 原文发表日期:20 ...

  6. 【ELK解决方案】ELK集群+RabbitMQ部署方案以及快速开发RabbitMQ生产者与消费者基础服务

    前言: 大概一年多前写过一个部署ELK系列的博客文章,前不久刚好在部署一个ELK的解决方案,我顺便就把一些基础的部分拎出来,再整合成一期文章.大概内容包括:搭建ELK集群,以及写一个简单的MQ服务. ...

  7. VH6501模板工程介绍(一)

    VH6501硬件结构 1.式样 1.正向有5个灯,用来指示干扰的触发状态,干扰类型(数字或模拟),通道通信以及设备状态. 2.两个DB9接口(公头male和母头female),这是CAN或CANFD通 ...

  8. ArcEngine 释放对象

    释放对象 例如IFeatureCursor,IFeatureClass等 ESRI.ArcGIS.ADF.ComReleaser.ReleaseCOMObject(myFeatureCursor); ...

  9. React Server Component: 混合式渲染

    作者:谢奇璇 React 官方对 Server Comopnent 是这样介绍的: zero-bundle-size React Server Components. 这是一种实验性探索,但相信该探索 ...

  10. .NET 6使用ImageSharp给图片添加水印

    ​ .NET 6 中,使用System.Drawing操作图片,生成解决方案或打包的时候,会有警告,意思是System.Drawing仅在 'windows' 上受支持.微软官方的解释是: Syste ...