跳到主要内容

LeanCLR for Unity

概述

leanclr-unity 是 LeanCLR 的 Unity 集成包(包名 com.code-philosophy.leanclr)。

它负责:

  • Unity Editor 侧项目设置与构建 Hook
  • 发布时用 LeanCLR 自动替换 IL2CPP
  • 将 LeanAOT、pgo2aot 等工具链接入 Unity 构建管线

LeanCLR 运行时本体在独立仓库 leanclr;插件包内附带同步的运行时与工具二进制。

为什么使用 LeanCLR for Unity

Unity 发布到 WebGL小游戏平台时,IL2CPP 常带来 wasm 过大、虚拟机与托管内存偏高等问题。使用 LeanCLR 替换 IL2CPP backend 后,在保持与 Unity 裁剪后 BCL 高兼容的同时,典型收益如下(相对 IL2CPP 全量 AOT 方案,配合 aot.xml / PGO 等选择性 AOT策略):

维度相对 IL2CPP 的优势
AOT 代码体积仅对热点或必要方法生成 AOT 时,托管代码编译产生的 AOT 原生代码可减少约 70%–90%,包体优化极其显著;非 AOT 部分由解释器执行,整体性能影响可控
内存虚拟机内存约减少 20%–35%,托管堆占用亦有少量下降
大型项目与包体策略支持 延迟加载代码热更新:在符合小游戏首包与分包要求的前提下,可承载数十 MB 级托管逻辑的大型项目
垃圾回收采用准确式 Mark-Sweep GC,回收效率更高,** GC 停顿更短、更快**

实现 selective AOT、延迟加载与热更的配置见 概念辨析项目设置。背景与 ECMA-335 能力见 为什么需要 LeanCLR

相关仓库

仓库说明
leanclr运行时与 AOT 工具链源码
leanclr-unityUnity 包(本集成)
leanclr-unity-demo示例 Unity 工程
hybridclrUnity 全平台原生 C# 热更新(与 LeanCLR 定位互补)

快速导航

步骤文档
确认版本与平台支持与限制
安装包安装
分清 LeanAOT / AOT / PGO / 延迟加载 / 热更新概念辨析
配置构建与热更项目设置
发布构建构建(含 CompileDllActiveTarget
同版本按需加载延迟加载
逻辑热更新代码热更新
优化 AOT 包体PGOAOT 规则文件