配布とバージョン
プラグインはフォルダー 1 つで配布します。受け取った人は、そのフォルダーをプラグインフォルダーに入れ、プラグインマネージャーで有効にします。
含めるファイル
Section titled “含めるファイル”| ファイル | 含めるか | 説明 |
|---|---|---|
plugin.json | はい | フォルダーの直下 |
| 自分の dll | はい | plugin.json の dll のパス |
| 自分が使う他の dll (NuGet パッケージなど) | はい | 自分の dll の隣。ビルド出力の .deps.json も一緒に入れます。 |
.pdb | 任意 | エラーの位置 (行番号) がログに表示されます。 |
NP.Editor.Sdk.dll | いいえ | エディターのものを使います。csproj で Private=false にして除外しておきます。 |
| 大きなデータ | 任意 | フォルダー内に置き、host.PluginDir で見つけます。 |
road_tools\├─ plugin.json├─ RoadTools.dll├─ RoadTools.deps.json├─ RoadTools.pdb└─ data\ └─ presets.jsondotnet build -c Release の出力フォルダーから上のファイルを選んで圧縮します。受け取る人には次のことを伝えます。
- 解凍して、
road_toolsフォルダーをプラグインフォルダー (ツール › プラグインフォルダーを開く) に入れます。 - ツール › プラグインマネージャー… で「再スキャン」を押します。
- 初回の場合は、セキュリティ警告で「信頼できる — 読み込む」を押します。
エディターのインストールフォルダーの下にある plugins\ フォルダーに入れても、エディターは読み込みます。
自分のバージョン番号 (version)
Section titled “自分のバージョン番号 (version)”plugin.json の version は semver (major.minor.patch) で上げます。プラグインマネージャーの「バージョン」列に表示されます。
| 変更内容 | 上げる位置 | 例 |
|---|---|---|
| バグ修正のみ | patch | 1.2.0 → 1.2.1 |
| 機能を追加 (保存形式・コマンドはそのまま) | minor | 1.2.1 → 1.3.0 |
| コマンド名・ワールドロジック type・設定キー・保存形式を変更 | major | 1.3.0 → 2.0.0 |
- ワールドロジックの
Typeと項目のNameはマップファイル (scene.json) に保存されます。変更すると、古いマップのルールが「不明な type」になります。 idは変更しないでください。設定ファイル・ユーザーが変更したショートカットはidで保存されます。
sdk 範囲
Section titled “sdk 範囲”sdk には実際に使う機能の最小バージョンを書きます。
| 使うもの | sdk | 動作するエディター |
|---|---|---|
| SDK 1.0 の機能のみ | ^1.0 | SDK 1.0 〜 1.x すべて |
Settings ・ Draw ・ AddShortcut | ^1.1 | SDK 1.1 〜 1.x |
AddSceneEvent | ^1.2 | SDK 1.2 〜 1.x (エディター 0.9.0 以上) |
Scene ・ View ・ ActorList | ^1.3 | SDK 1.3 〜 1.x (エディター 0.9.1 以上) |
- 高すぎると、古いエディターのユーザーが使えません。
- 低すぎると、古いエディターで読み込むときに存在しないメンバーのために失敗します (「バージョン不一致」)。
- 上限のない範囲 (
>=1.0) は使わないでください。次の major で壊れたまま読み込まれる可能性があります。
SDK 互換性の約束
Section titled “SDK 互換性の約束”| 約束 | 内容 |
|---|---|
| 同じ major 内 | 型・メンバーを追加するだけです。名前の変更や削除はしません。 |
| 新しい項目 | 既定値のある末尾の項目として追加します。古いコードはそのままコンパイルできます。 |
| 互換性を壊す変更 | major を上げます (2.0)。^1.x のプラグインは「バージョン不一致」で安全に停止し、エディターは動作を続けます。 |
| 動作 | 同じ major 内では登録ポイントの意味を変えません。 |
バージョンごとの変更は SDK 変更履歴 にあります。
セキュリティ
Section titled “セキュリティ”プラグインは署名チェックなしで、このコンピューター上でエディターと同じ権限で実行されるコードです。
| 防げるもの | 防げないもの |
|---|---|
| プラグインコードの例外 → そのプラグインだけを無効化 (隔離) | 無限ループ・スタックオーバーフロー・プロセスの終了 |
| 無効にしたプラグインの登録・描画・カメラの後片付け | ファイルの読み取り・書き込み・削除 |
| ネットワークへのアクセス |
- エディターはプラグインを初めて見つけたときに、警告を 1 回表示します。
- 自分で作ったもの、または信頼できる入手元から受け取ったプラグインだけを入れてください。
- 配布するときは、ソースや作成元を一緒に伝えてください。
- プラグインに秘密鍵・トークンを入れないでください。dll は簡単に解析できます。
公開前の確認
Section titled “公開前の確認”-
plugin.jsonのversionを上げた。 -
sdkが使う機能の最小バージョンになっている。 - フォルダーに
NP.Editor.Sdk.dllがない。 - 新しいユーザーのフォルダーに入れて「再スキャン」で有効になる。
- 有効 → 無効 → 有効で、メニュー・パネルが重複したり残ったりしない。
詳しいリストは トラブルシューティング の「公開前の確認」にあります。