LeanCLR for Unity

May 8, 2026 · View on GitHub

语言: 中文 | English

GitHub Gitee LeanCLR license Discord

leanclr4unityLeanCLRUnity 集成包

本仓库(包名 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.git
  • https://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。

相关仓库

仓库说明
leanclrLeanCLR 运行时与工具链(C++11,零外部依赖)
hybridclrHybridCLR是一个特性完整、零成本、高性能、低内存的Unity全平台原生c#热更新解决方案

支持与联系

许可证

使用 MIT License