AlicizaX/Client/Assets/Books/EditorExtension/HybridCLR.md
2026-04-01 13:20:06 +08:00

75 lines
2.3 KiB
Markdown

# EditorExtension HybridCLR 模块手册
## 模块概述
`HybridCLR` 模块封装热更新 DLL 构建、AOT 补充 DLL 复制、热更 DLL 复制与宏开关。核心入口为 `BuildDLLCommand`
## 适用场景
- 一键编译并拷贝热更新 DLL。
- 启用/关闭 `ENABLE_HYBRIDCLR`
- 输出 `.dll.bytes` 供运行时加载。
## 快速上手
### 菜单
- `HybridCLR/Tools/Define Symbols/Disable HybridCLR`
- `HybridCLR/Tools/Define Symbols/Enable HybridCLR`
- `HybridCLR/Tools/BuildAssets And CopyTo AssemblyTextAssetPath`
### 代码
```csharp
using UnityEditor;
BuildDLLCommand.Enable();
BuildDLLCommand.BuildAndCopyDlls(EditorUserBuildSettings.activeBuildTarget);
```
## 工作流程
1. 通过 `Enable()` / `Disable()` 控制宏与 HybridCLR 设置。
2. `BuildAndCopyDlls()` 编译热更程序集。
3. `CopyAOTHotUpdateDlls()` 复制 AOT 与 HotUpdate DLL。
4. `AssetDatabase.Refresh()` 刷新资源库。
## 可调用 API
源码:`Packages/com.alicizax.unity.editor.extension/Editor/HybridCLR/BuildDLLCommand.cs`
### 类型:`BuildDLLCommand`
#### `public static string AssemblyTextAssetPath`
- 作用:目标输出目录。
#### `public static void Disable()`
- 作用:关闭 HybridCLR 宏与设置。
#### `public static void Enable()`
- 作用:启用 HybridCLR 宏与设置。
#### `public static void BuildAndCopyDlls()`
- 作用:按当前激活平台编译并复制 DLL。
#### `public static void GenerateAll()`
- 作用:执行 `PrebuildCommand.GenerateAll()`
#### `public static void BuildAndCopyDlls(BuildTarget target)`
- 作用:按指定平台编译并复制 DLL。
#### `public static void CopyAOTHotUpdateDlls(BuildTarget target)`
- 作用:统一复制 AOT 与 HotUpdate DLL。
#### `public static void CopyAOTAssembliesToAssetPath()`
- 作用:复制 AOT 补充程序集到输出目录。
#### `public static void CopyHotUpdateAssembliesToAssetPath()`
- 作用:复制 HotUpdate 程序集到输出目录。
## 示例
```csharp
[UnityEditor.MenuItem("Tools/HybridCLR/全部生成")]
public static void BuildAll()
{
BuildDLLCommand.GenerateAll();
BuildDLLCommand.BuildAndCopyDlls(UnityEditor.EditorUserBuildSettings.activeBuildTarget);
}
```
## 注意事项
- 依赖 HybridCLR 包和相关生成脚本完整可用。
- AOT 源目录通常需要先执行生成或构建流程后才存在。