简介

众所周知,目前 ILRuntime 已经成为新项目主流的热更方案,相比于传统各种Lua的热更方案来说,ILRuntime有着更高的开发效率和更低的学习成本,同时通过编译成dll热更新,比起lua脚本来说,封装更加整洁和可控。目前ILRuntime已经成为Unity主推的一款热更方案。

安装和demo路径

直接参考前人的教程,这里不多赘述

HelloWorld

在运行测试完官方demo中的HelloWorld项目之后(如果没测试完,请按照上面的链接继续看),开始进行测试

  1. 在热更内容中创建自定义类
        public static void StaticFunTest(){//UnityEngine.Debug.Log("!!! InstanceClass.StaticFunTest()");StaticTest();var testA = new TestAClass();testA. log();}class TestAClass{public void Log(){UnityEngine.Debug.LogWarning("LOGLOGLOG");}}
  1. 在热更类中引用UnityEngine和UnityEngine.UI命名空间,并获取创建UI
    这里要注意的是,button的点击事件类型是UnityAction,直接使用ILRuntime会报错(KeyNotFound),需要去ILRuntime中注册UnityAction委托的转换器,具体教程也在上面链接中。
     public static void StaticFunTest(){//UnityEngine.Debug.Log("!!! InstanceClass.StaticFunTest()");StaticTest();var testA = new TestAClass();testA.CreatUI();}public void CreatUI(){var obj = GameObject.Find("UIManager");var containerA = obj.GetComponent<Container>();//自定义容器类,存放组件var canvnsA = GameObject.Instantiate((GameObject)containerA.Canvns,containerA.transform);canvnsA.GetComponent<Canvas>().worldCamera = Camera.main;var btn = canvnsA.GetComponentInChildren<Button>();btn.onClick.AddListener(OnClick);//实际情况下肯定是通过AA包或者AB包去加载预设实例化界面,ILRuntime 也有相关函数,进行封装即可使用}
  1. 在热更内部使用ref和out
     public static void StaticFunTest(){var testA = new TestAClass();int a = 5;int b;testA.RefCheck(ref a, out b);Debug.LogFormat("{0}  AND {1}!",a,b);}public void  RefCheck(ref int A,out int B){B = A;}

顺带一提,ILRuntime的跨域继承只能支持一个有Unity主工程的类或者接口,但是可以有随便多少个热更DLL中的接口,所以尽可能的减少跨域访问(可能需要自己写委托或者类型的适配器)和继承,以免带来不必要的麻烦。

结论

综合上面结论,理想情况就是所有需要热更的代码(主要是UI和各种游戏系统相关逻辑,表现层东西为主)都封装在一个dll里面,然后给出统一的运行接口由ILRuntime来驱动,调用unity层控件。相关需要的逻辑就在热更dll里面自洽(内部你怎么玩都没大问题)。unity层脚本只作为工具控件类,不要去主动调用热更层。

ILRuntime Demo总结相关推荐

  1. ILRuntime学习

    ILRuntime介绍 ILRuntime项目为基于C#的平台(例如Unity)提供了一个纯C#实现,快速.方便且可靠的IL运行时,使得能够在不支持JIT的硬件环境(如iOS)能够实现代码的热更新 I ...

  2. ILRuntime学习(之一)

    最近在学习ET框架,然后被群友告知,要先学ILRuntime.行吧,谁让咱是小白呢..... ILRuntime的学习资料我是参考的github上的教程https://ourpalm.github.i ...

  3. ILRuntime学习——从零开始

    1, ILRuntime项目为基于C#的平台(例如Unity)提供了一个纯C#实现,快速,方便且可靠的IL运行时,使得能够在不支持JIT的硬件环境(如iOS)能够实现代码的热更新 2,无缝访问C#工程 ...

  4. [Unity][ILRuntime][C#]热更新运行官方示例U3D项目报错

    下载ILRuntimeUnity3D项目,项目版本Unity 2020 解压后,用unity打开 unity 2019.4.19f1c1 报错 Library\PackageCache\com.uni ...

  5. ILRuntime来实现热更新的优与劣!

    热更新 Q1:使用ILRuntime来实现热更新的可行度有多高,大家有没有使用经验分享? 一般热更新分两块,代码+资源,资源热更几乎都是通过AssetBundle来搞,代码热更可以用某种解释器+解释执 ...

  6. 必读!ILRuntime来实现热更新的优与劣!

    原文链接:https://blog.uwa4d.com/archives/2308.html 这是第103篇UWA技术知识分享的推送.今天我们继续为大家精选了若干和开发.优化相关的问题,建议阅读时间1 ...

  7. [转载]必读!ILRuntime来实现热更新的优与劣!

    原文链接:https://blog.uwa4d.com/archives/2308.html 这是第103篇UWA技术知识分享的推送.今天我们继续为大家精选了若干和开发.优化相关的问题,建议阅读时间1 ...

  8. ILRuntime Unity热更新

    在新的项目中,使用到了ILRuntime的热更新方式,不同于XLua等,这种方式的热更新是由纯C#实现的,所以就不需要客户端懂Lua的代码.更详细的介绍可以看官方的文档. 官方的介绍及文档为:http ...

  9. ILRuntime入门05 类继承

    使用流程 我们可能需要热更工程去继承Unity工程中的类,那么我们就需要为其写一个适配器,具体流程如下: 新建Unity工程父类 public abstract class TestClassBase ...

最新文章

  1. 关于flume配置加载(二)
  2. 扫描到服务器的文件在哪个文件夹,云服务器的文件在哪个文件夹
  3. 手机python软件怎么创建项目_pycharm怎么创建项目
  4. 在TreeView查找某一节点
  5. Android窗口管理服务WindowManagerService的简要介绍和学习计划
  6. html的排版标题的是,HTML 5结构排版布局
  7. halcon 将数据保存到excel_pandas筛选、合并、批量保存excel数据
  8. 通过js引用外部脚本(嘿嘿,方便直接在浏览器上调试抓取代码)
  9. 茶百科 android代码,基于android平台手机茶百科开发设计---学位论文.doc
  10. abview查找范例时说 NI服务器未定位 这是怎么回事?
  11. Yam Finance和UMA合作推出Degenerative Finance
  12. iview 远程搜索选择器方法使用,选择之后清空选择的项
  13. windows 7 等 公文包 功能 作用 使用说明
  14. Julia: reduce 、mapreduce、filter
  15. If you already have a 64-bit JDK installed。。。。
  16. emi滤波matlab,【原创】EMI 滤波器设计从入门到精通(三)
  17. 前端学习第三站——Vue2基础篇
  18. ROS2知识(2):网络设施
  19. 写给新人的话——谈谈应届生入职后应该怎样快速成长
  20. 假设今天你开了一家经营生鲜品类的淘宝店,你怎么获取第一批用户, 并能够运营起来

热门文章

  1. 一款简约的乐享书籍小程序
  2. APP测试与Web测试的测试工具不同
  3. c语言中int转char数组,将一个int转换为一个4字节的char数组(C)
  4. Citespace使用教程1
  5. ajax 用户已注册,Ajax检测用户名是否已经注册
  6. kill -9无法杀死进程
  7. 如何把数字证书导入到Windows根证书存储区
  8. Mac使用技巧:使用以太网接入互联网的方法
  9. Ubuntu tripwire 配置安装
  10. 自媒体短视频怎么把文字转配音?