Godot4 プラグインでツールメニューにアイテムを追加して関数を呼び出す例

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

※ GodotEngine 4.3 を使用しています。.NET 版ではありません。
※スクリプトは自己責任でご使用ください。

プラグインの新規作成

「プロジェクト設定」ダイアログからプラグインを新規作成します。

メニュー「プロジェクト」→「プロジェクト設定」を選択して「プロジェクト設定」ダイアログの「プラグイン」タブを開き、右上の「新しいプラグインを作成」ボタンを押します。

「プラグインの作成」ダイアログで、プラグイン名などを入力して「作成」ボタンを押します。
※プラグイン名は CamelCase で書きます。

Godot4.3 プラグインの新規作成

ファイルシステム」ドックの addons フォルダの下に snake_case に変換されたプラグイン名と同じフォルダが作成されているので開きましょう。

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

Godot4.3 プラグインの新規作成2

作成直後の 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 とメンバ関数名の文字列によって作成します。

メニューアイテムの追加は、プラグインの有効化直後

メニューアイテムを追加するスクリプトを保存しても、すぐには反映されません

Godot4.3 add_tool_menu_item でメニューアイテムを追加してそこから関数を呼び出す例1

メニューアイテムを追加する add_tool_menu_item 関数は、プラグインを初期化する _enter_tree イベント関数内で呼び出されるので、エディタを起動した直後や、プラグインを有効にした直後に実行され、メニューアイテムを追加します。

プラグインの有効化

メニュー「プロジェクト」→「プロジェクト設定」を選択して表示された「プロジェクト設定」ダイアログの「プラグイン」タブで、さきほど新規作成したプラグインの「有効」チェックボックスに一度チェックをオフにしてから再びチェックをいれて有効にします。
※新規作成時の設定によって、最初からチェックされて有効になっている場合もあります。

Godot4.3 add_tool_menu_item でメニューアイテムを追加してそこから関数を呼び出す例2

テスト

以上で、プラグインを再度有効にしたことで、 _enter_tree イベント関数内の add_tool_menu_item 関数が実行され、メニューアイテムが追加されました。

メニュー「プロジェクト」→「ツール」のサブメニューに「Sc Fit Font Size」メニューアイテム追加されたことが確認できます。

Godot4.3 add_tool_menu_item でメニューアイテムを追加してそこから関数を呼び出す例3

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

Godot4 add_tool_menu_item でプロジェクト>ツールのメニューアイテムを追加して、指定した関数を呼び出しました。

まとめ

今回は、無料・軽快な 2D / 3D 用のゲームエンジン Godot Engine 4 で、エディター機能を拡張するプラグインを実装する EditorPlugin クラスを用いて、メニュー「プロジェクト」→「ツール」のサブメニューに任意のメニューアイテムを追加して、そのメニューアイテムを選択したら指定した関数を呼び出すスクリプト例を紹介します。

参照サイト Thank You!

記事一覧 → Compota-Soft-Press

コメント

Ads Blocker Image Powered by Code Help Pro

お願い - Ads Blocker Detected

このサイトは広告を掲載して運営しています。

ポップアップを閉じて閲覧できますが、よろしければ

このサイト内の広告を非表示にする拡張機能をオフにしていただけませんか?

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

タイトルとURLをコピーしました