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

2.3 KiB

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

代码

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 程序集到输出目录。

示例

[UnityEditor.MenuItem("Tools/HybridCLR/全部生成")]
public static void BuildAll()
{
    BuildDLLCommand.GenerateAll();
    BuildDLLCommand.BuildAndCopyDlls(UnityEditor.EditorUserBuildSettings.activeBuildTarget);
}

注意事项

  • 依赖 HybridCLR 包和相关生成脚本完整可用。
  • AOT 源目录通常需要先执行生成或构建流程后才存在。