MelonLoader 完整指南:如何给 Il2Cpp 和 Mono 双架构的 Unity 游戏加模组
2026/8/24 11:27:25 网站建设 项目流程

MelonLoader 完整指南:如何给 Il2Cpp 和 Mono 双架构的 Unity 游戏加模组

【免费下载链接】MelonLoaderThe World's First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader

MelonLoader 是一个面向 Unity 游戏的通用模组加载器,可以同时兼容 Il2Cpp 与 Mono 两种编译架构,支持 Windows、Linux 与 macOS 三个平台。对玩家来说,它的作用是让你下载的模组真正进得去游戏;对开发者来说,它提供了一套统一的模组 API,写一次代码即可运行在两种架构的游戏上。

一个加载器,解掉 Unity 模组开发里最常见的墙

Unity 游戏从 2017 年起可以选择 Il2Cpp 架构:引擎把 C# 代码编译成原生 C++,运行时不再有可直接读取的托管程序集。这意味着只针对 Mono 写的老一代模组加载器,在新游戏上直接失效——你面对的是两种完全不同的游戏二进制,却想让同一个模组库都能用。

MelonLoader 的解决方式是让引导层(MelonLoader.Bootstrap/)内部为每种架构配备独立的运行时处理器:

  • RuntimeHandlers/Mono/:Mono 游戏直接加载托管代码,沿用游戏自带的 Mono 运行时;
  • RuntimeHandlers/Il2Cpp/:Il2Cpp 游戏则依赖 .NET 6 运行时(Windows 下安装器会自动装好),并在运行时调用 Dependencies/Il2CppAssemblyGenerator/ 基于 Cpp2IL 重建游戏程序集,让 C# 代码能够引用 Il2Cpp 游戏里的类型;
  • RuntimeHandlers/Dotnet/:为 .NET 游戏提供另一条处理路径。

另外,Dependencies/CompatibilityLayers/ 目录内置了 IPA(Illusion Plugin Architecture)、Muse Dash Mod Loader、Demeo 等流行模组框架的兼容层,老项目无需重写也能跑在新加载器上。

三分钟完成首次安装:把 version.dll 放进游戏目录

手动安装只需要两步,对应 README.md 中的说明:

  1. 关闭游戏,从发布页下载 MelonLoader 压缩包,把其中的MelonLoader文件夹解压到游戏安装目录;
  2. 再把压缩包里的version.dll(以及 Linux 下的dobby相关文件)解压到同一目录,然后正常启动游戏。

卸载则反过来:删掉version.dllMelonLoader文件夹即可;若要彻底清理,再把生成的ModsPluginsUserData文件夹一并删除。

version.dll是一个"代理 DLL":它伪装成系统或游戏本来就会加载的动态库,在游戏启动早期劫持加载流程,把 MelonLoader 引导进进程。如果某些游戏不认这个名字,可以把它改名再放进去——Proxy/ 目录支持的名称包括winhttp.dllwinmm.dlldinput8.dlld3d9.dllddraw.dll等十余个常见库名。

非 Windows 平台同样有原生支持:Linux 覆盖 Wine、Steam Proton 和本机原生环境,macOS 提供了启动脚本 melonloader-launch.sh 简化安装。

游戏启动后发生了什么:开始画面、控制台与日志

引导入口在 MelonLoader.Bootstrap/Core.cs:进程一进来先读取配置文件,若被禁用就直接放行,否则初始化日志与符号重定向,把控制权交给加载器主体。

随后你会看到三样东西:

  • 开始画面:由 Dependencies/MelonStartScreen/ 渲染的自定义界面,展示模组加载进度,内置 Normal、Lemon、Pumpkin 三套主题,可用主题切换;
  • 游戏内控制台:实时打印各模组的加载信息,可选择置顶、隐藏或只隐藏警告;
  • 日志文件:全部保存在游戏目录下的MelonLoader/Logs中,默认保留最近 10 份,出问题时第一手资料就在这里。

Mods和 Plugins 两个文件夹会在首次运行时自动创建——前者放独立模组,后者放底层插件,这就是你以后摆放模组的位置。

把模组放进游戏:文件夹规则与"坏掉"的处理机制

一个能被识别的模组,需要在程序集上标注 MelonInfoAttribute,声明名称、版本、作者等元信息,并继承MelonMod(或MelonPlugin)基类。加载器扫描Mods目录时发现合法文件,才会实例化并注册它。

几个容易忽略的细节,都实现在 MelonFolderHandler.cs 中:

  • 子目录同样会被递归扫描,适合按游戏或按用途整理多个模组;
  • ~.开头的目录会被自动忽略;
  • 文件夹名恰好叫BrokenRetiredDisabled时会被整体排除——把出问题的模组文件夹改名扔进Broken,是最快的临时禁用手段;
  • 加载过程中抛异常的模组会被记录为 RottenMelon,带上具体的错误信息与异常堆栈写进日志,而不是让整个加载过程崩掉。

想改游戏行为而不改原始代码,MelonLoader 内置了 Harmony 补丁机制(见 BackwardsCompatibility/Harmony/),并在 MelonLoader/CompatibilityLayers/ 保留了旧版 API 的兼容映射,老教程里的写法基本可以直接照用。

配置文件与启动参数:排错时的调整手段

所有日志的开关都收在一个 TOML 文件里:UserData/Loader.cfg,首次运行后才会生成。每个配置项都对应一个等价的启动参数,例如:

  • debug_mode(对应--melonloader.debug):打开调试模式,日志更详细,仅开发时使用;
  • capture_player_logs:即使游戏自己禁用了日志,也强制捕获 Unity 玩家日志;
  • disable_start_screen:跳过开始画面,加快进入;
  • force_quit:修复部分游戏退出时进程挂起的问题;
  • harmony_log_level:控制 Harmony 补丁日志的详细程度,从NoneIL共六档。

排错顺序建议固定为三步:先加--no-mods启动确认加载器本身没问题;再逐个把可疑模组移入Broken文件夹做二分定位;最后打开MelonLoader/Logs里最新一份日志,按[W]警告和[E]错误行号回溯到具体模组。

下一步可以做什么:玩家直接从发布页下载压缩包,解压进游戏目录即可体验;模组开发者先通读 MelonLoader/Melons/ 下的MelonMod与属性定义,搭一个最小可运行模组;若你要维护老插件,重点参考 Dependencies/CompatibilityLayers/ 里已有的兼容层写法。

【免费下载链接】MelonLoaderThe World's First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询