
UnityModManager的mod.json字段完整清单5分钟写出正确的Mod元数据【免费下载链接】unity-mod-managerUnityModManager项目地址: https://gitcode.com/gh_mirrors/un/unity-mod-managerUnityModManager简称 UMM是让 Unity 引擎游戏支持 Mod 加载的核心框架而每个 Mod 能否被正确识别和加载取决于 Mod 文件夹里那份不起眼的mod.json。本文面向新手和普通用户用一份完整字段清单真实加载逻辑帮你在 5 分钟内写出正确的 Mod 元数据一次通过不再踩坑。为什么 mod.json 决定 Mod 生死UMM 启动时会扫描Mods目录下的每一个子文件夹并读取其中的mod.json来解析 Mod 信息。只要这个文件写得不对Mod 就会被直接跳过或加载失败而且日志里往往只有一行模糊的报错。读懂它的解析逻辑你写出来的元数据才知其然更知其所以然文件夹里没有mod.json→ 直接忽略不报错也不加载Id为空 → 记录Id is null并跳过Id与其他 Mod 重复 → 记录Id xxx already uses another mod并跳过。 小贴士mod.json的查找路径由游戏配置中的ModInfo项决定通常就是mod.json找不到时会再尝试小写文件名。解析入口在 ModManager.cs字段定义在 ModInfo.cs。mod.json 字段完整清单下表是 UMM 从mod.json中会读取的全部字段依据 ModInfo.cs 的类定义。字段类型必填作用说明Idstring✅ 必填Mod 唯一标识全局不可重复UMM 靠它识别 ModAssemblyNamestring⚙️ 视情况要加载的 DLL 文件名省略时默认为Id.dllEntryMethodstring⚙️ 视情况入口方法格式为命名空间.类名.方法名Versionstring建议Mod 版本号用于更新检测和排序DisplayNamestring建议在 UMM 界面中显示的 Mod 名称Authorstring可选作者署名ManagerVersionstring可选要求的最小 UMM 版本不满足则拒绝加载GameVersionstring可选要求的最小游戏版本0.15.0不满足则拒绝加载Requirementsstring[]可选依赖的其它 Mod可带版本约束LoadAfterstring[]可选加载顺序控制0.22.5指定排在哪些 Mod 之后HomePagestring可选主页链接若为 Nexus 地址还可自动检测更新Repositorystring可选自定义更新仓库地址ContentTypestring可选内容类型标签0.26.0用于 UI 分类筛选说明IsCheat虽然在定义中出现但标注了[NonSerialized]不会从mod.json读取属于特定游戏如 RoR2的内部运行时字段作者无需填写。关键字段逐个拆解必填与半必填Id、AssemblyName、EntryMethod这三个字段是 Mod 能否跑起来的基石。Id唯一身份标识建议用简短、无空格、无特殊字符的名字例如MyFirstMod。它同时决定日志里的名字、依赖引用时的名字以及默认的 DLL 文件名。AssemblyName要加载的程序集文件名。如果你的 DLL 就叫MyFirstMod.dll可以省略此字段——UMM 会自动按Id .dll推断见 ModManager.cs。但一旦填写文件名必须与磁盘完全一致否则报File not found。EntryMethod入口方法的全名格式是命名空间.类名.方法名方法必须是静态方法。⚠️ 关键校验见 ModEntry.csAssemblyName和EntryMethod要么都不填要么都填。只填一个会直接导致加载失败。如果你的 Mod 只有配置文件、没有 DLL两个都留空即可。版本闸门ManagerVersion 与 GameVersion这两个字段像安检门不满足条件就拒绝加载见 ModEntry.csManagerVersion要求 UMM 版本 ≥ 你写的值。比如你用了某个新特性就写明最低 UMM 版本避免老版本 UMM 带崩。GameVersion要求游戏版本 ≥ 你写的值0.15.0 生效。注意如果游戏自身无法解析出版本号这个检查会被跳过。 建议Version写你自己的 Mod 版本ManagerVersion/GameVersion只在你确实依赖新版时才写别画蛇添足。依赖与加载顺序Requirements 与 LoadAfterRequirements声明依赖的其它 Mod。数组里每个元素可以只写Id不校验版本写成Id-版本号例如CommonLib-1.2.3UMM 会用正则提取出最低版本要求见 ModEntry.cs。依赖缺失或版本过低 → 你的 Mod拒绝加载如果依赖被禁用UMM 会尝试自动启用它。LoadAfter控制加载顺序告诉 UMM我要在这些 Mod 之后加载0.22.5。被引用的 Mod 不存在时不会报错只记一条提示日志它参与 UMM 的拓扑排序见 ModManager.cs。选择建议Requirements表示没有它我就不能工作硬性依赖LoadAfter表示我希望晚一点加载顺序偏好二者用途不同不要混用。更新检测Repository 与 HomePageUMM 会在联网时自动检查更新数据来源有两处见 Updates.csRepository指向一个发布清单。它的结构是一个 JSON内含Releases数组每项含Id、Version、DownloadUrl定义见 Repository.cs。UMM 会比对你当前Version发现更高版本就标记更新。HomePage在 UMM 界面里是一个可点击跳转的链接如果它是符合特定格式的 Nexus 地址UMM 会进一步调用其 API 来检测更新需要配置 API Key。 一般个人小 Mod 填HomePage即可想做规范化发布再配Repository。界面友好型DisplayName、Author、ContentTypeDisplayName界面显示名。省略时 UMM 会回退用Id当名字但显示会很丑建议必填。Author纯署名信息用于展示。ContentType0.26.0给 Mod 打标签如 UI、Graphics。UMM 会做整词、忽略大小写的匹配来做界面筛选见 ModEntry.cs。5 分钟快速上手最小可用模板下面是一份能跑起来的最小mod.json只包含必填/建议项复制后改名即可使用{ Id: MyFirstMod, DisplayName: 我的第一个 Mod, Author: 你的名字, Version: 1.0.0, AssemblyName: MyFirstMod.dll, EntryMethod: MyFirstMod.MyMod.Init }如果你还要加依赖和版本闸门可以这样扩展{ Id: MyFirstMod, DisplayName: 我的第一个 Mod, Version: 1.0.0, AssemblyName: MyFirstMod.dll, EntryMethod: MyFirstMod.MyMod.Init, ManagerVersion: 0.22.5, Requirements: [ CommonLib-1.2.3 ], LoadAfter: [ SomeOtherMod ], HomePage: https://example.com/my-mod }把这份文件放进Mods/MyFirstMod/文件夹与你的 DLL 放在一起重新启动游戏即可。常见错误速查表现象可能原因排查方向Mod 根本不出现文件夹缺少mod.jsonId为空或重复检查文件名与Id唯一性提示AssemblyName is null/EntryMethod is null只填了其中一个两个字段同时填或同时留空File xxx.dll not foundAssemblyName与磁盘文件名不一致核对 DLL 文件名区分大小写依赖不加载Requirements写错Id或版本过低用Id-版本规范写法界面更新检测不工作HomePage不是标准 Nexus 地址或Repository结构不对检查 JSON 的Releases结构小结掌握这份mod.json字段清单你就握住了让 Mod 被 UMM 正确识别的全部钥匙必填三件套IdAssemblyNameEntryMethod后两者要么都填、要么都不填版本闸门ManagerVersion/GameVersion谨慎使用依赖与顺序硬依赖用Requirements顺序偏好用LoadAfter展示与更新DisplayName提升可读性Repository/HomePage负责更新。字段定义与解析逻辑都可在源码中查证定义见 ModInfo.cs解析与校验见 ModManager.cs 和 ModEntry.cs。照着清单对照一遍你的 Mod 元数据就能一次写对 。【免费下载链接】unity-mod-managerUnityModManager项目地址: https://gitcode.com/gh_mirrors/un/unity-mod-manager创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考