無料・軽快な 2D / 3D 用のゲームエンジン Godot Engine 4 で、エディター機能を拡張するプラグインを実装できる EditorPlugin クラスを用いて、メニュー「プロジェクト」→「ツール」のサブメニューに任意のメニューアイテムを追加して、そのメニューアイテムを選択したら指定した関数を呼び出すスクリプト例を紹介します。
※ GodotEngine 4.4 (現状は unstable) からは EditorContextMenuPlugin によって、コンテキストメニューにメニューを追加できそうですが、2025 年 3 月 1 日現在の最新版である 4.3 では実装されていません。

※ GodotEngine 4.3 を使用しています。.NET 版ではありません。
※スクリプトは自己責任でご使用ください。
プラグインの新規作成
「プロジェクト設定」ダイアログからプラグインを新規作成します。
メニュー「プロジェクト」→「プロジェクト設定」を選択して「プロジェクト設定」ダイアログの「プラグイン」タブを開き、右上の「新しいプラグインを作成」ボタンを押します。
「プラグインの作成」ダイアログで、プラグイン名などを入力して「作成」ボタンを押します。
※プラグイン名は CamelCase で書きます。

「ファイルシステム」ドックの addons フォルダの下に snake_case に変換されたプラグイン名と同じフォルダが作成されているので開きましょう。
同じく snake_case に変換されたプラグイン名の gd ファイルがあるのでダブルクリックで Script ワークスペースに開きます。
※ plugin.cfg テキストファイルを編集することで、先ほど「プラグインの作成」ダイアログで入力した説明文などを修正できます。

作成直後の gd スクリプトは以下のようなスケルトンコードが書かれています。
@tool
extends EditorPlugin
func _enter_tree():
# Initialization of the plugin goes here.
pass
func _exit_tree():
# Clean-up of the plugin goes here.
pass
以上で、新規プラグインを作成することができました。
プラグインの新規作成については以下の記事も参照してください。
プラグインで特定のメニューにメニューアイテムを追加するスクリプト
前の章で作成したプラグインのスクリプトを、以下の gd スクリプトで上書きします。
@tool
extends EditorPlugin
## 選択されているノード群にテキストを持ったコントロールがある場合に、
## コントロールのサイズからはみ出ない最大のサイズにフィットしたフォントサイズに自動調節するエディタ拡張です。
## メニュー「プロジェクト」→「ツール」に追加されたメニューアイテムを選択することで実行されます。
## メニューアイテムの表示名です。
var tool_menu_item_name: StringName = "Sc Fit Font Size"
## プラグインの初期化処理を定義します。
## プラグイン (プロジェクト設定ダイアログ>プラグイン>有効) を有効にした直後や、プラグインが有効な状態のプロジェクトを開いた際に呼び出されます。
func _enter_tree():
# Initialization of the plugin goes here.
add_tool_menu_item(tool_menu_item_name, Callable(self, "_on_menu_item_sc_fit_font_size"))
print("sc_fit_font_size.gd: _enter_tree called")
## プラグインの後片付けの処理を定義します。
## プラグインを無効 (プロジェクト設定ダイアログ>プラグイン>有効) にした直後や、プラグインが有効な状態のプロジェクトを閉じた際に呼び出されます。
func _exit_tree():
# Clean-up of the plugin goes here.
remove_tool_menu_item(tool_menu_item_name)
print("sc_fit_font_size.gd: _exit_tree called")
## メニュー「プロジェクト」→「ツール」→「Sc Fit Font Size」メニューが選択された際に呼び出される関数です。
func _on_menu_item_sc_fit_font_size():
print("_on_menu_item_sc_fit_font_size called")
上記のスクリプトは、EditorPlugin の機能を用いて、限定された場所(メニュー「プロジェクト」→「ツール」のサブメニュー)に、任意のメニューアイテム「Sc Fit Font Size」を追加します。
メニューアイテムの追加・削除には、 EditorPlugin のメンバ関数 add_tool_menu_item, remove_tool_menu_item を使用します。
add_tool_menu_item の第二引数では、 Callable オブジェクトを渡します。
この Callable オブジェクトは、メンバ関数を呼び出すファンクタなので、今回メンバ関数の呼び出し元である self とメンバ関数名の文字列によって作成します。
メニューアイテムの追加は、プラグインの有効化直後
メニューアイテムを追加するスクリプトを保存しても、すぐには反映されません。

メニューアイテムを追加する add_tool_menu_item 関数は、プラグインを初期化する _enter_tree イベント関数内で呼び出されるので、エディタを起動した直後や、プラグインを有効にした直後に実行され、メニューアイテムを追加します。
プラグインの有効化
メニュー「プロジェクト」→「プロジェクト設定」を選択して表示された「プロジェクト設定」ダイアログの「プラグイン」タブで、さきほど新規作成したプラグインの「有効」チェックボックスに一度チェックをオフにしてから再びチェックをいれて有効にします。
※新規作成時の設定によって、最初からチェックされて有効になっている場合もあります。

テスト
以上で、プラグインを再度有効にしたことで、 _enter_tree イベント関数内の add_tool_menu_item 関数が実行され、メニューアイテムが追加されました。
メニュー「プロジェクト」→「ツール」のサブメニューに「Sc Fit Font Size」メニューアイテムが追加されたことが確認できます。

その追加されたメニューアイテムを選択すると、 add_tool_menu_item 関数の第二引数で指定した関数が呼び出され、その関数の print 文が出力ボトムパネルに表示されました。

まとめ
今回は、無料・軽快な 2D / 3D 用のゲームエンジン Godot Engine 4 で、エディター機能を拡張するプラグインを実装する EditorPlugin クラスを用いて、メニュー「プロジェクト」→「ツール」のサブメニューに任意のメニューアイテムを追加して、そのメニューアイテムを選択したら指定した関数を呼び出すスクリプト例を紹介します。
参照サイト Thank You!
- Godot Engine – Free and open source 2D and 3D game engine
- プラグインの作成 — Godot Engine (4.x)の日本語のドキュメント
- EditorPlugin — Godot Engine (4.3)の日本語のドキュメント
- EditorPlugin — Godot Engine (4.3)の日本語のドキュメント #add_tool_menu_item
- EditorPlugin — Godot Engine (4.3)の日本語のドキュメント #remove_tool_menu_item
- Callable — Godot Engine (4.3)の日本語のドキュメント
- EditorContextMenuPlugin — Godot Engine (4.x)の日本語のドキュメント
記事一覧 → Compota-Soft-Press
コメント