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_tools | RoadTools · 1road · _road |
只能使用小写字母 · 数字 · _ | road_tools2 | road-tools · road tools |
可以用 . 分隔段 | myteam.road_tools | myteam..road · road. |
- 存在两个相同
id时,只使用最先找到的文件夹中的那个(插件文件夹顺序 → 文件夹名称顺序)。其余的变为「错误 (文件)」。 - 在编辑器内,此插件注册的菜单 · 模式 · 面板 id 前会加上
ext.<id>.。 - 设置文件名(
plugin_settings\<id>.json)和快捷键的保存也使用id。以后若更改id,已保存的设置将无法延续。
sdk 范围
Section titled “sdk 范围”| 写法 | 含义 | 使用场合 |
|---|---|---|
"^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 版本不在范围内,则变为「版本不匹配」且不加载。编辑器继续运行。
应该写哪个版本
Section titled “应该写哪个版本”| 使用的功能 | 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": "도로팀",}