文本介绍了老项目使用HybridCLR 集成热更的过程
从项目结构调整,代码调整,打包,热更测试,跑完HybridCLR所有流程
先看效果(安卓)
源码及资料领取方式私信:领取资料:HybridCLR战棋热更源码
采用战棋框架作为讲解素材
因为它包含了商业游戏的常见业务,比如(战斗,技能,AI,UI,资源管理,A星寻路系统等常用功能)
项目功能越复杂,集成的过程更有参考意义
了解AOT和热更代码
根据业务需求变化频率,一般可分为2个部分
变化频率低的通用业务
变化频率高的游戏业务
热更业务,所属目录(HotUpdate)
战斗,技能,UI,AI,流程控制。
通用业务(AOT),所属目录(ThirdParty)
资源管理模块(JAssetBundleMgr),负责资源的加载和下载更新,加解密(具体可以查阅往期的视频)
A星寻路库(AStarPathFinding),负责游戏路径的计算
对象池管理库(PathologicalGames)
基本可以认为这些模块是不会改动的,是稳定的
也可以理解为HybridCLR提及的AOT代码
资源更新对比实现,需要放在AOT
项目工程结构
入口
文件对比更新完毕后的回调,在这里加载热更代码的dll文件
之前用的是ILRUNTIME,这个版本使用hybridclr
原有的热更代码作为保留参考和对比
由Enrty.Start(),添加游戏组件GameRoot,由它初始化游戏
(在官方demo里多加了一行代码完成游戏吃初始化)
部分代码差异
集成了hybridCLR之后改后改回unity3d内置的API写法
订阅开始按钮点击事件
部分代码差异->部分代码差异
设置预制体脚本
支持挂载组件
集成中遇到哪些问题处理的时间花了比较长?
第三方插件,比如,A*插件
因为第三方插件不需要热更,所以放在了AOT
因为热更代码是不能包含编辑器代码的
所以要分离Editor和运行时的代码
整理AOT目录和热更目录
这里的方法是把所有第三方工具放到同一目录,分离EDITOR代码到其他目录
热更代码丢失AOT引用
:
热更程序集引用三方类库
热更程序集缺少引用,因为项目使用了A*插件,并且划分在了AOT程序内,所以热更程序集需要声明引用了第三方的程序集
打包流程
打包即可
热更流程
修改代码,生成热更dll
覆盖版本库里的文件
拷贝到资源服务器即可
填写资源服IP