C#热更新方案的选择

前项目的C#热更方案


小甜甜的C#热更方案

前段时间 noodle 说他把 小甜甜 项目中他做的 C#热更方案 开源了。

这个方案是一个 骚操作,不过是针对 il2cpp 的,核心思想是更新 libil2cpp.so,具体细节可以参考 github主页


暗黑血统的C#热更方案

再早一点的项目 暗黑血统,那还是 Unity4 的时代,我们的C#热更方案也是一个 骚操作,这里列一下要点:

  1. Assembly-CSharp-firstpass.dllAssembly-CSharp.dll 是Unity预定的2个程序集。

  2. Assembly-CSharp-firstpass.dll 包括了加载热更代码的代码,不可被热更新,Assembly-CSharp.dll 包括主要的游戏逻辑代码,期望可以被热更新。

  3. 打包的时候,把 Assembly-CSharp.dll 中的代码移动到我们自定的 GameLogic.dll 中,并把 Assembly-CSharp.dll 清空(namespace颠倒)。

  4. 运行的时候,Assembly-CSharp-firstpass.dll 中的代码通过 Assembly.Load 的方式去加载 GameLogic.dllGameLogic.dll 可以从服务器下载获取,以此达到热更新的目的。

这样做看起来OK,但是有一个很大的限制: 预设不能挂载非firstpass目录的脚本,原因可以参考这篇帖子。 当然,我们可以在运行时通过 AddComponent 的方式去挂载脚本,但是这样做限制较大。

骚操作 之所以被称为 骚操作,就是我们可以打破这个限制:即把 Assembly-CSharp.dll 换成了 GameLogic.dll 后,也要保证预设能够找得到原先引用的脚本。

暗黑血统 的做法是:在生成GameLogic.dll后,改cs文件对应的meta文件,把dll重新定向到GameLogic.dll,重启编辑器再打包

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值