コンテンツにスキップ

概要

NP Editor は C# プラグインで機能を追加できます。プラグインは dll 1 つと plugin.json 1 つからなるフォルダーです。プラグインは SDK (NP.Editor.Sdk.dll) 1 つだけを参照します。Godot やエディター内部のコードを知る必要はありません。

このドキュメントは SDK 1.3.0 を基準としています。現在のエディターの SDK バージョンは、ツール › プラグインマネージャー… ウィンドウの上部に SDK 1.3.0 のように表示されます。

追加先エディター画面登録ポイントSDK
メニュー項目メニューバー (ファイル・編集・ウィンドウ・ツール・ビルド・ヘルプ、新しい名前 = 新しいメニュー)AddMenuItem1.0
クイック追加メインツールバー「追加」(検索・分類・アイコン)AddQuickAddItem1.0
コンソールコマンド下部の「コンソール」パネルAddCommand1.0
インポート・エクスポートファイル › インポート: … ・ビルド › エクスポート: …AddImporter · AddExporter1.0
パネル下部エリアのパネル (ウィンドウメニューから開く)AddContentTab + NpUi1.0
モードメインツールバーのモード列 + ツールパネル + ビューポートのクリックAddMode1.0
アクタータイプアウトライナー「タイプ」列の文字・色AddActorType1.0
セルガード・対称すべてのブロック編集に割り込むAddCellGuard · AddSymmetry1.0
画面検証シナリオ--np-shot=<id> 自動スクリーンショット・検査 (エディター開発用ビルド)AddShotScenario1.0
ショートカットツール › ショートカット… (ユーザーが変更可能)AddShortcut1.1
設定の保存プラグインごとに JSON ファイル 1 つhost.Settings1.1
3D オーバーレイ描画ビューポート上の線・ボックス・文字host.Draw1.1
ワールドロジック typeワールドロジック・ロジックグラフ・チェック・MCP・プレイのプレビューAddSceneEvent1.2
シーンアクターの読み取り・プレイカメラシーンアクター一覧、プレイ中のカメラhost.Scene · host.View1.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 (メニュー・モード・パネル・ワールドロジック・ビューポート)
層役割
自分のプラグイン dllINpEditorPlugin.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 です。

セキュリティ: プラグインは署名チェックなしで、エディターと同じ権限で実行されるコードです。自分で作ったもの、または信頼できる入手元から受け取ったプラグインだけを入れてください。詳しくは 配布とバージョン を参照してください。

やりたいことドキュメント
10 分で最初のプラグインを作るクイックスタート
plugin.json の項目を知るplugin.json
有効化・無効化・エラー隔離の仕組み読み込みとライフサイクル
ワールドの読み書き、イベント、設定、3D 描画ホスト API
メニュー・モード・コマンドなどすべての登録ポイント登録ポイント
パネル UI を作るパネル UI (NpUi)
ワールドロジックにトリガー・条件・アクションを追加するワールドロジック type の追加
プレイ中のカメラ演出シーンの読み取りとプレイカメラ
テスト・デバッグテストとデバッグ
他の人に配布する配布とバージョン
エラーが出たときトラブルシューティング
SDK バージョンごとの変更点SDK 変更履歴
サンプルのソースサンプル: hello_tool ・ サンプル: csv_export ・ サンプル: event_example