安装

在项目的Packages/manifest.json中,dependencies节点前增加以下代码

"scopedRegistries": [
  {
    "name": "ILRuntime",
    "url": "https://registry.npmjs.org",
    "scopes": [
      "com.ourpalm"
    ]
  }
],

在PackageManager中导入ILRT,并导入官方DEMO

image-20211111221426965

项目设置中同意使用不安全的代码

image-20211111221036620

基础使用

在项目目录下有一个隐藏文件夹,以“~”结尾的文件夹不会被识别到UNITY的资源列表中

image-20211111221750046

打开文件夹,其实这就是我们的热更项目,虽然也放在了Asset之下,但其实和主工程是没有关联的

image-20211111222038003

  • ①热更工程所需要直接依赖的DLL,可以放在任意地方,但项目里必须引用,注意,UNITY相关的DLL比如UnityEnginXX也需要被直接引用
  • ②热更工程,就是一个普通的C#工程

整理一下项目结构

首先我们把热更工程放到Assets之外,没啥用,单纯个人喜好

image-20211111222406051

常见报错

  • 找不到 .NETFramework,Version=XX 的引用程序集

    下一个Visual Studio Installer,修改->单个组件,找到对应的工具包下载下来即可

  • 无法编译

    Visual Studio Installer中的单个组件里面还有一个MSBuild,安装一下

  • 必须添加对程序集“netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51”的引用

    不要使用NET4.6,用4.7或者以上

引入DLL

打开项目,会有一些类找不到,因为我们移动了项目的路径,需要重新添加对于Assembly-CSharp的

image-20211111230352532

UNITY会把所有的非编辑器脚本都注入到这个DLL中(除非自己额外定义了程序集),所以我们所有的类其实都在这个DLL中,自然必须要引用他

在项目目录中的如下位置

image-20211111230600149

修改编译路径

修改一下IDE默认的编译路径

image-20211111230637237

image-20211111233701759

同时确保必须生成PBD文件

image-20211111234628262

### 编译时不拷贝DLL

image-20211111233730917

回到UNITY,让引擎先编译一下最新程序集

然后Build热更工程,成功导出DLL

image-20211111234216733

最后打开测试场景01,运行,成功输出

image-20211111234722189