LeanCLR for Unity
May 8, 2026 · View on GitHub
leanclr4unity 是 LeanCLR 的 Unity 集成包。
本仓库(包名 com.code-philosophy.leanclr)负责 Unity Editor 侧集成、构建管线衔接与发布工作流;LeanCLR 运行时 为独立仓库 LeanCLR。
为什么使用 LeanCLR for Unity
LeanCLR 是一个面向全平台的精练的 CLR(Common Language Runtime)实现。LeanCLR 的设计目标是在高度符合 ECMA-335 规范的前提下,提供更紧凑、易嵌入、低内存占用的运行时,实现对移动端、H5 与小游戏等资源受限平台的友好支持。Unity发布到WebGL和小游戏平台时 存在wasm文件过大,内存占用过高的问题。使用LeanCLR替换il2cpp,可以显著减少构建后的wasm文件大小,同时降低元数据内存和托管内存的开销。
更完整的背景、与 CoreCLR / Mono / IL2CPP 的对比、路线图与模块进度,请参阅 LeanCLR README。
文档
支持的Unity版本和平台
- 暂时支持Windows平台Unity Editor,后续版本会支持MacOS和linux
- 支持Unity 2021 - 6000 所有版本(含LTS和非LTS版本)
- 支持团结引擎所有版本
- 支持WebGL和MiniGame平台
- 部分支持其他平台(如Win64),但仅支持单线程,并且可能需要手动修改相应平台的构建工程文件(如Unity 6000 发布Win64平台时需要在Il2CppOutputProject.vcxproj文件中移除il2cpp的命令行参数
--static-lib-il2-cpp,否则启动时会有il2cpp init failed错误。)
限制
由于目前还处于早期版本,某些方面实现还不完整。
- 不支持GC,但后续版本很快会跟进
- 只支持单线程
- 仅支持mscorlib和Unity引擎的dll中引入的pinvoke函数,不支持用户程序集中定义pinvoke函数。
示例项目
安装
在Unity Package Manager中点击Add package from git URL...,填入以下任一地址即可完成安装:
https://github.com/focus-creative-games/leanclr4unity.githttps://gitee.com/focus-creative-games/leanclr4unity.git
设置
通过菜单 LeanCLR/Settings...(或 Edit > Project Settings > LeanCLR)打开项目设置页。配置保存在 ProjectSettings/LeanCLR.asset,离开设置页时会自动保存。
主开关
enable:是否启用 LeanCLR。关闭后,打包时不会走本包集成的 IL2CPP / LeanCLR 流程。
Lean AOT(leanAOTSettings)
打包阶段 Lean AOT(leanaot) 相关选项。若未展开配置,则使用内置默认值(布局校验关闭,规则文件与延迟加载程序集列表为空)。
layoutValidation:是否开启类型布局等相关校验,便于在开发期尽早发现与原生布局不一致的问题;一般仅在需要排查或严格校验时开启。ruleFiles:用于配置 AOT 规则文件路径列表(可多个)。规则文件的格式、节点与语义说明见包内文档Docs~/aot-rule-file.md。每项路径可为相对 Unity 工程根目录(与Assets同级)的相对路径,或本机绝对路径;打包前会校验文件存在,不存在则构建失败。留空或不配置列表即不使用外部规则文件。lazyLoadAssemblyNames:列表中的程序集在构建时不会写入 global-metadata.dat,运行时需你自行Assembly.Load等方式加载。这些程序集仍会参与 AOT 编译。
构建
无需任何操作,本插件会自动在发布时使用leanclr替换il2cpp。
相关仓库
| 仓库 | 说明 |
|---|---|
| leanclr | LeanCLR 运行时与工具链(C++11,零外部依赖) |
| hybridclr | HybridCLR是一个特性完整、零成本、高性能、低内存的Unity全平台原生c#热更新解决方案 |
支持与联系
- 邮箱:
leanclr#code-philosophy.com - Discord:https://discord.gg/esAYcM6RDQ
- QQ 群:1047250380
许可证
使用 MIT License。