[toc]

# 综述

最小单元:按照下面这个流程走一遍就可以了

https://hybridclr.doc.code-philosophy.com/docs/beginner/quickstart# 测试热更新

# 代码热更示例

打包的 dll 放在这里 效果如下
让我们把代码改成下面的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Hello
{
public static void Run()
{
Debug.Log("Hello HybridCLR 你好啊");

GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);

cube.transform.position = Vector3.zero;
}
}

然后调用一下 HybridCLR/Generate/All
将更新后的 dll 放到上面的目录中
结果:

# 流程分析

  1. 首先需要先安装 hybridCLR
    其中 il2cpp_plus 仓库下是一个完整的 il2cpp 的实现以及根据 hybridCLR 进行的一些优化
    最终会将所有文件放到这个目录下:

IL2CPP_PLUS 源代码里有很多节点被 hybrid 劫持,简称 Hook
即实现了下述图中的功能:

  1. HybridCLR 如何将 Unity 的 IL2CPP 替换成自己的

通过 PreprocessBuild 设置 UNITY_IL2CPP_PATH 环境变量

# 参考

https://zhuanlan.zhihu.com/p/531468413
https://hybridclr.doc.code-philosophy.com/docs/intro
https://blog.csdn.net/NRatel/article/details/127355276
https://www.zhihu.com/search?type=content&q=HybridCLR