ChuanXin 发表于 2022-10-27 21:23

Unity热更新:huatuo示例项目源码分析与启发

前言

上一节我们安装huatuo的开发环境,然后运行示例项目,体验了huatuo做热更新,这节课我们来分析示例项目的源码,掌握huatuo做热更新的主要的步骤,让你自己的项目很好的基于huatuo来组织热更新。有几个huatuo的原则要清楚:


对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀
我们带着这些原则来对示例项目来做源码分析得到自己开发项目中的启发。
启发1:游戏代码如何分工程与项目


这里给到我们的启发,我们在做自己游戏项目的时候,也可以根据自己的项目需求利用Unity ADF机制,来将项目划分称若干工程,而这些工程,可以单独的生成IL的.dll代码指令。这样就可以给IL2CPP_huatuo来解释执行了。由这里得到的启发,我们用huatuo做项目的时候我会将项目如下划分,供大家参考:


Main.csproj:可以用来做框架工程,实现各个框架模块,初始化框架,进入具体游戏逻辑,提供基础的服务,如SDK服务等。这个是传统热更的框架层,一般情况下不用热更,使用AOT后的代码就可以了,如果万一要热更,也可以直接热更生成的main.dll。
若干业务逻辑项目工程: 根据游戏的类型来进行区分若干游戏项目,根据版本比对决定这些.dll是否需要被il2cpp_huatuo虚拟机装载。
启发2: 扩展编辑器来生成所有.dll


没有什么可说的,调用API,打包.dll,直接copy过来就可以了。根据我们上面的分析,对.dll生成不同版本的.dll md5文件列表这个需要自己扩展一下,示例代码中没有。
启发3:要热更哪部分代码,就装载哪部分代码


它分为了发布模式与Edtior模式,发布模式就是直接把.dll装载进入il2cpp_huatuo的vm中,调用API函数: System.Reflection.Assembly.Load(.dll的二进制文件内容),在底层huatuo做了修改。编辑器模式下,调用AppDomain就行装载就可以了,所以这个代码我们直接可以参考拿过来,比较出哪些.dll要热更,我就转载它就可以了。


今天的分享就到这里了, 关注我们, 接下来还会继续更新huatuo热更的系列教程。
页: [1]
查看完整版本: Unity热更新:huatuo示例项目源码分析与启发