コンテンツにスキップ

配布とバージョン

プラグインはフォルダー 1 つで配布します。受け取った人は、そのフォルダーをプラグインフォルダーに入れ、プラグインマネージャーで有効にします。

ファイル含めるか説明
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.json

dotnet build -c Release の出力フォルダーから上のファイルを選んで圧縮します。受け取る人には次のことを伝えます。

  1. 解凍して、road_tools フォルダーをプラグインフォルダー (ツール › プラグインフォルダーを開く) に入れます。
  2. ツール › プラグインマネージャー… で「再スキャン」を押します。
  3. 初回の場合は、セキュリティ警告で「信頼できる — 読み込む」を押します。

エディターのインストールフォルダーの下にある plugins\ フォルダーに入れても、エディターは読み込みます。

plugin.json の version は semver (major.minor.patch) で上げます。プラグインマネージャーの「バージョン」列に表示されます。

変更内容上げる位置例
バグ修正のみpatch1.2.0 → 1.2.1
機能を追加 (保存形式・コマンドはそのまま)minor1.2.1 → 1.3.0
コマンド名・ワールドロジック type・設定キー・保存形式を変更major1.3.0 → 2.0.0
  • ワールドロジックの Type と項目の Name はマップファイル (scene.json) に保存されます。変更すると、古いマップのルールが「不明な type」になります。
  • id は変更しないでください。設定ファイル・ユーザーが変更したショートカットは id で保存されます。

sdk には実際に使う機能の最小バージョンを書きます。

使うものsdk動作するエディター
SDK 1.0 の機能のみ^1.0SDK 1.0 〜 1.x すべて
Settings ・ Draw ・ AddShortcut^1.1SDK 1.1 〜 1.x
AddSceneEvent^1.2SDK 1.2 〜 1.x (エディター 0.9.0 以上)
Scene ・ View ・ ActorList^1.3SDK 1.3 〜 1.x (エディター 0.9.1 以上)
  • 高すぎると、古いエディターのユーザーが使えません。
  • 低すぎると、古いエディターで読み込むときに存在しないメンバーのために失敗します (「バージョン不一致」)。
  • 上限のない範囲 (>=1.0) は使わないでください。次の major で壊れたまま読み込まれる可能性があります。
約束内容
同じ major 内型・メンバーを追加するだけです。名前の変更や削除はしません。
新しい項目既定値のある末尾の項目として追加します。古いコードはそのままコンパイルできます。
互換性を壊す変更major を上げます (2.0)。^1.x のプラグインは「バージョン不一致」で安全に停止し、エディターは動作を続けます。
動作同じ major 内では登録ポイントの意味を変えません。

バージョンごとの変更は SDK 変更履歴 にあります。

プラグインは署名チェックなしで、このコンピューター上でエディターと同じ権限で実行されるコードです。

防げるもの防げないもの
プラグインコードの例外 → そのプラグインだけを無効化 (隔離)無限ループ・スタックオーバーフロー・プロセスの終了
無効にしたプラグインの登録・描画・カメラの後片付けファイルの読み取り・書き込み・削除
ネットワークへのアクセス
  • エディターはプラグインを初めて見つけたときに、警告を 1 回表示します。
  • 自分で作ったもの、または信頼できる入手元から受け取ったプラグインだけを入れてください。
  • 配布するときは、ソースや作成元を一緒に伝えてください。
  • プラグインに秘密鍵・トークンを入れないでください。dll は簡単に解析できます。
  • plugin.json の version を上げた。
  • sdk が使う機能の最小バージョンになっている。
  • フォルダーに NP.Editor.Sdk.dll がない。
  • 新しいユーザーのフォルダーに入れて「再スキャン」で有効になる。
  • 有効 → 無効 → 有効で、メニュー・パネルが重複したり残ったりしない。

詳しいリストは トラブルシューティング の「公開前の確認」にあります。