跳转到内容

plugin.json

plugin.json 是放在插件文件夹根目录下的描述文件。编辑器通过此文件查找、检查并加载插件。没有此文件的文件夹不会被视为插件。

%APPDATA%\NPEditor\plugins\
└─ road_tools\
├─ plugin.json
├─ RoadTools.dll
└─ RoadTools.pdb (可选)
字段必填格式说明
id是字符串插件 id。遵循下方「id 规则」。可以与文件夹名称不同。
name否字符串在插件管理器中显示的名称。留空时使用 id。
version是字符串插件自身的版本,格式为 x.y.z。后面可以加 -标签 或 +标签(例 1.2.0-beta.1)。
sdk是字符串所需的 SDK 版本范围。遵循下方「sdk 范围」。
dll是字符串要加载的 dll 路径,为相对于 plugin.json 的相对路径。可以使用子文件夹,但不能使用 .. 和绝对路径。必须以 .dll 结尾。
entry否字符串入口类的完整名称(命名空间.类)。留空时使用 dll 中实现了 INpEditorPlugin 的第一个类(按完整名称排序)。
description否字符串显示在插件管理器的说明行和工具提示中。
author否字符串作者。
  • 所有字段都是 JSON 字符串。非字符串的值视为空字段。
  • 上表以外的字段会被忽略。
  • 允许 // 注释和末尾逗号。
  • 字段有误时,插件管理器中会显示「错误 (文件)」及原因。
规则正确错误
以小写字母开头road_toolsRoadTools · 1road · _road
只能使用小写字母 · 数字 · _road_tools2road-tools · road tools
可以用 . 分隔段myteam.road_toolsmyteam..road · road.
  • 存在两个相同 id 时,只使用最先找到的文件夹中的那个(插件文件夹顺序 → 文件夹名称顺序)。其余的变为「错误 (文件)」。
  • 在编辑器内,此插件注册的菜单 · 模式 · 面板 id 前会加上 ext.<id>.。
  • 设置文件名(plugin_settings\<id>.json)和快捷键的保存也使用 id。以后若更改 id,已保存的设置将无法延续。
写法含义使用场合
"^1.2"1.2.0 及以上、低于 2.0.0推荐。 写所用功能的最低版本。
"1.2"与 "^1.2" 相同
"~1.2"1.2.0 及以上、低于 1.3.0只能在 1.2.x 上运行时
">=1.0"1.0.0 及以上(无上限)不推荐。在下一个 major 版本中也会加载。
">1.0"高于 1.0.0
"<1.5"低于 1.5.0与其他条件一起使用。
"<=1.4"1.4.0 及以下
">=1.0 <1.5"1.0.0 及以上、低于 1.5.0用空格连接多个条件。
"=1.3.0"仅 1.3.0测试用
  • 版本写 1~3 段。1 即 1.0.0,1.2 即 1.2.0。
  • 版本后的 -标签 不参与比较。
  • 若编辑器的 SDK 版本不在范围内,则变为「版本不匹配」且不加载。编辑器继续运行。
使用的功能sdk
菜单 · 快速添加 · 命令 · 导入/导出 · 面板 · 模式 · Actor 类型 · 格守卫 · 对称 · WorldChanged · Committed^1.0
以上 + 快捷键 · Settings · Draw^1.1
以上 + AddSceneEvent^1.2
以上 + Scene · View · 字段类型 ActorList^1.3

各版本的内容见 SDK 更新日志。

在同一 major 版本内,SDK 只会添加成员,不会更改名称。因此 ^1.0 的插件在 SDK 1.3 的编辑器中也能运行。

最简短的文件。

{
"id": "my_first_plugin",
"version": "0.1.0",
"sdk": "^1.0",
"dll": "MyFirstPlugin.dll"
}

使用了所有字段的文件。

{
// 在管理器窗口中显示的名称
"id": "myteam.road_tools",
"name": "도로 도구",
"version": "1.2.0",
"sdk": "^1.1",
"dll": "bin/RoadTools.dll",
"entry": "RoadTools.Plugin",
"description": "선택 영역에 도로 깔기 · 가로등 · 단축키 Ctrl+Alt+R",
"author": "도로팀",
}