ILRunimte实战总结

本文分享了ILRuntime在实际项目应用中的优化经验,包括代码热更策略、枚举类型处理、委托使用技巧、跨域继承注意事项及减少GC操作等,旨在帮助开发者提升热更效率,减少下载流量。

ILRunime在实际项目应用中,总结以下经验:

1、代码尽量放到热更部分

项目最初考虑控制热更dll的大小,以减少下载流量,所以将通信协议类和数据表类放在了主工程;但这些代码生成的绑定文件大小有5MB,这些代码生成的dll只有500K,对包体还是有较大影响。

所以可以将这些代码放到热更部分,并且作为一个独立的数据类dll,热更中新增的通信协议类和数据表类另外作为一个dll,其他热更代码也作为一个dll,总共3个dll;这样的话,首包包含数据类dll,其他热更代码dll,热更时只更新新增数据类dll和其他热更代码dll。

这样就不会在更新时重复下载这些很少改动的代码,节约下载流量费用,又减小包体。

 

2、对于枚举类型支持不够完善

在热更代码使用枚举类型,会出现非预期的结果,这是因为因为枚举内部实际是整型,ILRuntime对于枚举类型需要单独处理,ILRuntime github的issue有很多关于枚举类型问题的修复。

目前存在的问题:

CompareTo异常:

TestType t1 = TestType.Five;

TestType t2 = TestType.One;

t1.CompareTo(t2); 报错

目前解决方法:转为int比较,((int)t1).CompareTo((int)t2);

 

3、委托使用

需要注册适配器的情况:把热更中的委托实例传递到主工程,比如热更中使用List的Foreach<T>

需要注册转换器的情况:热更中使用非Func,Action的委托,比如Predicate

实际使用中,可以在热更部分扩展方法,省去注册的麻烦。

 

 

4、跨域继承

减少热更部分继承主工程的类,如果是泛型基类,使用到的每种类型都要有对应的适配代码

 

5、减少获取过程、减少GC

  • 缓存频繁调用的方法
  • 直接传入对应类型,避免装箱拆箱
using (var ctx = GameEntry.ILRuntime.AppDomain.BeginInvoke(m_OnUpdate))
            {
                ctx.PushObject(m_HotfixInstance);
                ctx.PushFloat(elapseSeconds);
                ctx.PushFloat(realElapseSeconds);
                ctx.Invoke();
            }

 

本课程主要是针对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可以根据上面的方式,自行添加依赖的库... 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值