Unity热更新笔记(一)ILRuntime基础使用

4 篇文章 3 订阅
2 篇文章 0 订阅
本文介绍了如何在Unity项目中利用ILRuntime实现热更新,包括添加ILRuntime包、创建热更工程、引用Unity库、打包路径设置及基本代码调用。后续还将探讨与Addressables的配合。
摘要由CSDN通过智能技术生成

简介

官方说明(翻墙)
官方的Unity Demo(中文注释)
通过运行时动态的解析指定的 DLL 中的 IL1 代码来实现热更新(我不确定我描述、用词是否足够精准)。每次更新,只需要像资源一样,替换 DLL 文件,就能改变要执行的代码

一,准备工作

1.创建Unity工程,并添加 ILRuntime 包

正常创建 unity 项目
在 Package Manager 中搜索添加 ILRuntime 包
unity 2019.4.28f1c1

2.创建热更工程

VS 创建 DLL 工程,路径最后是跟 unity 工程放一起
(如果名字后面带 ~ unity不会编译。奇怪的知识增加了.jpg)
在这里插入图片描述
在这里插入图片描述

3.热更工程添加 unity 库

在 VS 项目中添加库的引用
在这里插入图片描述
unity 包的路径。
(如果想在热更项目中用 unity 的 log ,需要引用 UnityEngine.CoreModule.dll)
在这里插入图片描述
在这里插入图片描述

4.需要修改热更工程打包路径

(直接放 StreamingAssets 方便测试,后续会改地方)
在这里插入图片描述

5.热更工程创建完毕

二,代码调用

官方Demo里面有各种调用,规规矩矩,明明白白,中文注释
用法与普通反射的写法非常相似,
在这里插入图片描述
在这里插入图片描述

三,配合 addressable 使用(coming soon)

后续文章写好后,会在此处添加链接

四,其他

另一种热更工程的创建

在 unity 项目中创建 Assembly,unity 也会编译生成对应的 dll
这样有两个问题:

  • 要写脚本搬运编译好的 dll 文件。不会吧,不会吧,不会有程序员想要手动移动文件吧
  • 主项目跟热更项目没有脱离,不确定直接引用会不会有什么坑

在这里插入图片描述
在这里插入图片描述


  1. Intermediate Language (IL)微软中间语言。网上大佬说的很清楚 ↩︎

本课程主要是针对ILRuntime设计一个独立的脚本热更新框,框架的优势:1.将代码热更脱离Assetbundle资源热更,独立的部分更适用于各种不同的框架。2.加快项目的逻辑更新,bug修复.(后期修bug,多数情况下并不用动到资源,只需要更新脚本代码,无需重走资源打包发布流程,大大提升效率)3.提供热更模式和正常开发模式的快速切换接口,可以让队友像平常一样去开发.4.不依赖市面上的任何AB框架,完全兼容市面上各种不同的AB框架.5.重点:希望通过它,帮助你学习、了解ILRuntime真正在项目中的应用.框架的将提供以下这些接口,这些接口将从0开始,在Unity里将C#脚本编译成dll,然后将dll放到服务器上,再将dll下载下来,进行加载,到最后从Unity主工程调用热更新的代码逻辑.1.Create hotfixdll接口将热更部分的代码 编译成dll生成dll版本配置(MD5)2.更新对比接口本地跟服务器的dll进行版本对比3.下载热更dll下载dll本身的文件下载版本记录文件4.加载热更dll加载dll实例化:AppDomain初始化:注册跨域继承适配器注册委托适配器LitJson重定向调用性能优化(CLR绑定功能)调用热更接口Hotfix.HotfixApplication.Main 进入热更逻辑5.ILMonoBehaviour用于监听组件的生命周期,实际是桥接(调用)热更的逻辑AwakeStartEnableUpdateLateUpdate.......6.添加其他常用的库DOTweenLitJsonSpineGoogle.ProtobufTextAnimation可以根据上面的方式,自行添加依赖的库... 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值