模组教程
  • 🏠主页
  • 😀介绍
  • 😇玩家手册
    • 📕安装教程
    • 📔使用说明
    • 🐴注意事项
  • 😅模组制作教程
    • 😅预先准备
    • 😎创建一个模组
    • 😘常用NML功能
    • 🤔其他常用
    • 🥸BepInEx
  • 🤔基础概念
    • 👌模组声明
    • 🎨模组接口
    • 👌模组设置
    • 👍模组依赖
    • 🤗多语言文本
  • 😶‍🌫️资源加载
    • 📕概览
    • 😁Resources
    • 😂AssetBundle
  • 😪其他技术
    • 👌模组重载
    • 🫥事件监听
    • 😄上传模组
  • 🫨游戏内容添加
    • 🥳创建装备
  • 🤩用户交互界面
    • 🥳按钮
    • 😁交互栏
    • 😂内置预制体
    • 😄一般窗口
    • 😆自动布局窗口
  • 😘懒人福利
    • 😍基础模组
  • 🚗NML开发和OpenMods项目
    • 📕介绍
    • NML 开发
    • NML 模组文档
    • 示例模组
    • Unity开发工具包
    • 原版代码文档
Powered by GitBook
On this page
  • 介绍
  • 解析
  • 仓库地址
  • 硬依赖
  • 软依赖
  • 不兼容模组列表
  • 图标路径
  • 访问
  1. 基础概念

模组声明

PreviousBepInExNext模组接口

Last updated 1 year ago

介绍

NML与NCMS一样, 用mod.json文件来表示一个模组的信息. 但不同的是, NML用mod.json来定位模组, 如果一个文件夹中不存在一个有效的mod.json文件, 那么该文件夹就判定为不存在模组.

目前NML不支持在子文件夹下搜索mod.json, 如果是用于声明模组请直接放置在模组文件夹下. 额外的key并不会与NCMS冲突.

解析

mod.json文件会按JSON格式等价解析成

public class ModDeclare
{
    public string name;                      // 模组名
    public string author;                    // 作者名
    public string version;                   // 版本
    public string description;               // 描述
    public string iconPath;                  // 图标路径(相对于mod.json所在文件夹)
    public string RepoUrl;                   // 仓库地址
    public string[] Dependencies;            // 硬依赖
    public string[] OptionalDependencies;    // 软依赖
    public string[] IncompatibleWith;        // 不兼容模组列表(未实现)
}

其中, 模组名和作者名尽量不要包含特殊符号

在运行时, 会使用"作者名_模组名"并取大写作为模组的ID, 其中属于ASCII码但不是数字或字母的字符会被替换为下划线. 如

作者名
模组名
ID

Nikon#7777

Example Mod

NIKON_7777_EXAMPLE_MOD

一米

中文名

一米_中文名

仓库地址

可以不填, 一般用于反馈bug或建议. 在模组列表中通过一个按钮访问(不知道怎么描述, 懂得都懂).

硬依赖

应当是模组ID的数组. 当所有硬依赖的模组均编译成功时, 该模组才会编译加载.

软依赖

应当是模组ID的数组. 其中的某个模组编译成功后, 该模组在编译时会加入编译成功的软依赖模组的ID作为宏(预定义常数)

不兼容模组列表

应当是模组ID的数组. 其功能未实现

图标路径

相对于模组文件夹, 可以为空, 为空时, 图标默认为NML的图标

访问

当一个模组能够访问到ModDeclare时, ModDeclare已经经过NML处理, 具体的定义如下

public class ModDeclare
{
    // 模组名
    [JsonProperty("name")] 
    public string Name { get; private set; }
    // 模组ID
    public string UID { get; private set; }
    // 作者
    [JsonProperty("author")] 
    public string Author { get; private set; }
    // 版本
    [JsonProperty("version")] 
    public string Version { get; private set; }
    // 描述
    [JsonProperty("description")] 
    public string Description { get; private set; }
    // 仓库地址
    [JsonProperty("RepoUrl")] 
    public string RepoUrl { get; private set; }
    // 硬依赖模组ID数组
    [JsonProperty("Dependencies")] 
    public string[] Dependencies { get; private set; }
    // 软依赖模组ID数组
    [JsonProperty("OptionalDependencies")] 
    public string[] OptionalDependencies { get; private set; }
    // 不兼容模组ID数组
    [JsonProperty("IncompatibleWith")] 
    public string[] IncompatibleWith { get; private set; }
    // mod.json所在文件夹路径
    public string FolderPath { get; private set; } = null!;
    // 图标路径(相对于mod.json所在文件夹)
    [JsonProperty("iconPath")] 
    public string IconPath { get; private set; }
}

其中JsonProperty特性中的字符串表示解析时对应的key

🤔
👌
mod.json示例