跳到主要内容

配置程序集

一般来说,必须将热更新代码独立为assembly,才能方便地进行热更新。

程序集分类

Assembly Definition定义的程序集

这是Unity推荐的程序集方式。将一个大的Unity项目代码拆分为多个程序集模块,便于管理,缩短编译时间。

请阅读文档Assembly definitions了解如何创建程序集。

Assembly-CSharp 程序集

这是Unity的默认全局程序集。它可以像普通dll一样当作热更新程序集。

普通的dll程序集

一些代码被提前编译成dll文件,再移到项目中。

划分程序集

很显然,项目代码必须合理拆分为AOT(即编译到游戏主包内)程序集 和 热更新程序集,才能进行热更新。HybridCLR对于 怎么拆分程序集并无任何限制,甚至可以把第三方工程中的代码作为热更新程序集。一般来说,游戏刚启动时,至少需要一个AOT程序集来负责启动及热更新相关工作。

常见的拆分方式有几种:

  • Assembly-CSharp作为AOT程序集。剩余代码自己拆分为N个AOT程序集和M个热更新程序集。
  • Assembly-CSharp作为热更新程序集。剩余代码自己拆分为N个AOT程序集和M个热更新程序集。

无论哪种拆分方式,正确设置好程序集之间的引用关系即可。请不要在AOT程序集中引用热更新程序集,这会导致打包出错。如果 你们项目把Assembly-CSharp作为AOT程序集,强烈建议关闭热更新程序集的auto reference选项。因为Assembly-CSharp是最顶层assembly,它会自动引用剩余所有assembly,很容易就出现失误引用热更新程序集的情况。