概要
プラグイン開発 (SDK) の概要
Section titled “プラグイン開発 (SDK) の概要”NP Editor は C# プラグインで機能を追加できます。プラグインは dll 1 つと plugin.json 1 つからなるフォルダーです。プラグインは SDK (NP.Editor.Sdk.dll) 1 つだけを参照します。Godot やエディター内部のコードを知る必要はありません。
このドキュメントは SDK 1.3.0 を基準としています。現在のエディターの SDK バージョンは、ツール › プラグインマネージャー… ウィンドウの上部に SDK 1.3.0 のように表示されます。
プラグインで追加できるもの
Section titled “プラグインで追加できるもの”| 追加先 | エディター画面 | 登録ポイント | SDK |
|---|---|---|---|
| メニュー項目 | メニューバー (ファイル・編集・ウィンドウ・ツール・ビルド・ヘルプ、新しい名前 = 新しいメニュー) | AddMenuItem | 1.0 |
| クイック追加 | メインツールバー「追加」(検索・分類・アイコン) | AddQuickAddItem | 1.0 |
| コンソールコマンド | 下部の「コンソール」パネル | AddCommand | 1.0 |
| インポート・エクスポート | ファイル › インポート: … ・ビルド › エクスポート: … | AddImporter · AddExporter | 1.0 |
| パネル | 下部エリアのパネル (ウィンドウメニューから開く) | AddContentTab + NpUi | 1.0 |
| モード | メインツールバーのモード列 + ツールパネル + ビューポートのクリック | AddMode | 1.0 |
| アクタータイプ | アウトライナー「タイプ」列の文字・色 | AddActorType | 1.0 |
| セルガード・対称 | すべてのブロック編集に割り込む | AddCellGuard · AddSymmetry | 1.0 |
| 画面検証シナリオ | --np-shot=<id> 自動スクリーンショット・検査 (エディター開発用ビルド) | AddShotScenario | 1.0 |
| ショートカット | ツール › ショートカット… (ユーザーが変更可能) | AddShortcut | 1.1 |
| 設定の保存 | プラグインごとに JSON ファイル 1 つ | host.Settings | 1.1 |
| 3D オーバーレイ描画 | ビューポート上の線・ボックス・文字 | host.Draw | 1.1 |
| ワールドロジック type | ワールドロジック・ロジックグラフ・チェック・MCP・プレイのプレビュー | AddSceneEvent | 1.2 |
| シーンアクターの読み取り・プレイカメラ | シーンアクター一覧、プレイ中のカメラ | host.Scene · host.View | 1.3 |
ワールドの読み書きもできます (host.World)。ブロックステートの文字列は Minecraft 形式 (minecraft:oak_stairs[facing=east]) です。World.Edit 1 回が元に戻すの 1 ステップです。
外部プラグインと内蔵プラグイン
Section titled “外部プラグインと内蔵プラグイン”| 外部プラグイン (このドキュメントの対象) | 内蔵プラグイン | |
|---|---|---|
| 場所 | プラグインフォルダー内のフォルダー 1 つ | エディター内 |
| 参照 | NP.Editor.Sdk.dll 1 つ | エディター内部のコード |
| 有効化・無効化 | プラグインマネージャーで、エディターを終了せずに | 常に有効 |
| エラー | そのプラグインだけを隔離し、エディターは動作を続行 | エディターと一緒に修正 |
| 互換性 | SDK バージョン (semver) で保証 | エディターのバージョンと同じ |
エディターの基本機能 (ブロックブラシ・ランドスケープ・ワールドロジックなど) も、同じ登録構造の内蔵プラグインです。内蔵プラグインは外部に公開されていない登録ポイント (表示モード・ビューポートのドラッグ・パネル領域の選択など) も使います。このドキュメントでは外部プラグインのみを扱います。
自分のプラグイン.dll ──参照──> NP.Editor.Sdk.dll (インターフェイス・データ型) │ プラグインホスト (plugin.json の検査・SDK バージョンの比較・ロードコンテキスト・エラー隔離) │ NP Editor (メニュー・モード・パネル・ワールドロジック・ビューポート)| 層 | 役割 |
|---|---|
| 自分のプラグイン dll | INpEditorPlugin.Register(host) で登録ポイントを呼び出します。 |
NP.Editor.Sdk.dll | インターフェイスとデータ型だけを含みます。エディターが同じファイルを先に読み込んでおき、プラグインと共有します。 |
| プラグインホスト | plugin.json を検査し、SDK バージョンを比較します。プラグインごとに個別のロードコンテキストを作成し、プラグインコードの例外を捕捉してそのプラグインだけを無効にします。 |
| エディター | 登録されたものをメニュー・ツールバー・パネル・ワールドロジックに追加します。無効にするとすべて取り外します。 |
登録したものには、エディター内で ext.<プラグイン id>. という接頭辞が付きます。そのため、内蔵機能や他のプラグインと名前が衝突しません。コンソールコマンド名とワールドロジック type は例外です。詳しくは 読み込みとライフサイクル を参照してください。
| 項目 | 値 |
|---|---|
| エディター | NP Editor 0.9.1 以上 (SDK 1.3)。SDK 1.2 までの機能だけを使う場合は 0.9.0 でも動作します。 |
| .NET | .NET 8 SDK (dotnet --version が 8. 以上) |
| 言語 | C# 12 (net8.0 ターゲット) |
| コードエディター | 任意の C# エディター (Visual Studio・Rider・VS Code) |
| SDK dll | エディターのインストールフォルダーにある data_NPEditor_windows_x86_64\NP.Editor.Sdk.dll |
エディターの既定のインストールフォルダーは %LOCALAPPDATA%\Programs\NP Editor です。
セキュリティ: プラグインは署名チェックなしで、エディターと同じ権限で実行されるコードです。自分で作ったもの、または信頼できる入手元から受け取ったプラグインだけを入れてください。詳しくは 配布とバージョン を参照してください。
次に読むドキュメント
Section titled “次に読むドキュメント”| やりたいこと | ドキュメント |
|---|---|
| 10 分で最初のプラグインを作る | クイックスタート |
plugin.json の項目を知る | plugin.json |
| 有効化・無効化・エラー隔離の仕組み | 読み込みとライフサイクル |
| ワールドの読み書き、イベント、設定、3D 描画 | ホスト API |
| メニュー・モード・コマンドなどすべての登録ポイント | 登録ポイント |
| パネル UI を作る | パネル UI (NpUi) |
| ワールドロジックにトリガー・条件・アクションを追加する | ワールドロジック type の追加 |
| プレイ中のカメラ演出 | シーンの読み取りとプレイカメラ |
| テスト・デバッグ | テストとデバッグ |
| 他の人に配布する | 配布とバージョン |
| エラーが出たとき | トラブルシューティング |
| SDK バージョンごとの変更点 | SDK 変更履歴 |
| サンプルのソース | サンプル: hello_tool ・ サンプル: csv_export ・ サンプル: event_example |