Godot4 プラグインの新規作成と有効無効の切り替えで呼び出されるイベント

無料・軽快な 2D / 3D 用のゲームエンジン Godot Engine 4 で、独自のプラグインを新規作成するために必要な入力項目の説明と、作成したプラグインの有効・無効の切り替え方を紹介します。
また、プラグインが有効 / 無効になった際に呼び出されるイベント関数についても print 文で動作を確認します。

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

GodotEngine のプラグインとは

プラグインを作成/導入することで、エディタの機能を追加できます。
モジュールよりも少ない工程で作成することができます。

プラグインは、便利なツールを使用してエディタを拡張する優れた方法です。エディタをリロードしなくても、GDScriptと標準シーンで完全に作成できます。モジュールとは異なり、C++コードを作成したり、エンジンを再コンパイルしたりする必要はありません。これによりプラグインのパワフルさが低下しますが、プラグインでできることはまだたくさんあります。プラグインは、エディタ機能を追加するスクリプトを使用して作成されることを除いて、すでに作成できるシーンに似ていることに注意してください。

プラグインの作成 — Godot Engine (4.x)の日本語のドキュメント

プラグインの新規作成

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

Godot4 新しいプラグインの作成と有効化1

「プラグインの作成」ダイアログで、項目を入力して「作成」ボタンを押します。
※項目の説明文は、ダイアログの項目をマウスオーバーした際に表示されるツールチップの説明文をほとんど引用しています。

  • プラグイン名
    必須。この名前はプラグインのリストに表示されます。
  • サブフォルダー
    任意。フォルダ名は一般的に snake_case を使用する必要があります。スペースや特殊文字は避けてください。空のままだと、プラグイン名を snake_case に変換したものがフォルダ名になります。
  • 説明
    任意。この説明は比較的短くしてください(5行まで)。
    プラグインのリストにカーソルを置いたときに表示されます。
  • 作者
    任意。著者のユーザー名、フルネーム、または組織名。
  • バージョン
    任意。情報提供のみを目的とした、人間が読めるバージョン識別子。
  • 言語
    必須。スクリプトに使用する言語。
    プラグインにスクリプトを追加することで、一度に複数の言語を使うことができます。
    デフォルトでは GD Script のみ選択可能です。
  • スクリプト名
    任意。スクリプトへのパス(アドオンフォルダからの相対パス)。空の場合、デフォルトは “plugin.gd” です。
  • 今すぐアクティブ化?
    チェックすると、プラグインが作成直後から有効になります。
    ※「プロジェクト設定」ダイアログの「プラグイン」タブの「有効」チェックボタンで確認できます。
Godot4 新しいプラグインの作成と有効化2

以下は、入力例です。

Godot4 新しいプラグインの作成と有効化3

先ほど開いた「プロジェクト設定」ダイアログ「プラグイン」タブを表示すると、インストール済みプラグインのリストに作成したプラグインが追加されていることが確認できます。

Godot4 新しいプラグインの作成と有効化4

イベント関数の動作確認

作成された直後のスクリプトでは、 _enter_tree, _exit_tree イベント関数が何もしない処理として定義されています。

@tool
extends EditorPlugin


func _enter_tree():
	# Initialization of the plugin goes here.
	pass


func _exit_tree():
	# Clean-up of the plugin goes here.
	pass

_enter_tree は、エディターの起動時などのプラグインが有効になった直後に呼び出されます。
プラグインの初期化処理を行うことが想定されています。

Called when the node enters the SceneTree (e.g. upon instantiating, scene changing, or after calling add_child in a script). If the node has children, its _enter_tree callback will be called first, and then that of the children.

Corresponds to the NOTIFICATION_ENTER_TREE notification in Object._notification.

ノードが SceneTree に入ったとき (インスタンス化時、シーン変更時、またはスクリプトで add_child を呼び出した後など) に呼び出されます。ノードに子がある場合、その _enter_tree コールバックが最初に呼び出され、次に子の _enter_tree コールバックが呼び出されます。

Object._notification の NOTIFICATION_ENTER_TREE 通知に対応します。
Node — Godot Engine (4.x)の日本語のドキュメント #method-enter-tree と Google 翻訳

_exit_tree は、エディターの終了時などのプラグインが無効になる直前に呼び出されます。
プラグインのクリーンアップの処理を行うことが想定されています。

Called when the node is about to leave the SceneTree (e.g. upon freeing, scene changing, or after calling remove_child in a script). If the node has children, its _exit_tree callback will be called last, after all its children have left the tree.

Corresponds to the NOTIFICATION_EXIT_TREE notification in Object._notification and signal tree_exiting. To get notified when the node has already left the active tree, connect to the tree_exited.

ノードが SceneTree から出ようとしているときに呼び出されます (たとえば、解放時、シーンの変更時、またはスクリプトで Remove_child を呼び出した後)。ノードに子がある場合、すべての子がツリーから離れた後、その _exit_tree コールバックが最後に呼び出されます。

Object._notification およびシグナル Tree_exiting の NOTIFICATION_EXIT_TREE 通知に対応します。ノードがすでにアクティブなツリーから離れたときに通知を受け取るには、tree_exited に接続します。
Node — Godot Engine (4.x)の日本語のドキュメント #method-exit-tree と Google 翻訳

以下のスクリプトでは、それぞれが呼ばれたこと確認するために、 print 文を追加しました。

@tool
extends EditorPlugin

## ノードが SceneTree に入ったとき (インスタンス化時、シーン変更時、またはスクリプトで add_child を呼び出した後など) に呼び出されます。
func _enter_tree():
	# Initialization of the plugin goes here.
	print("ScPathTool plugin を初期化します")
	return

## ノードが SceneTree から出ようとしているときに呼び出されます(たとえば、解放時、シーンの変更時、またはスクリプトで Remove_child を呼び出した後)。
func _exit_tree():
	# Clean-up of the plugin goes here.
	print("ScPathTool plugin を終了します")
	return

_enter_tree, _exit_tree イベント関数は、プラグインが有効になった直後と、無効になった直後に呼び出されるので、先ほど開いた「プロジェクト設定」ダイアログの「プラグイン」タブのプラグインの「有効」チェックボックスON/OFF を切り替えることでも呼び出せます

Godot4 新しいプラグインの作成と有効化5

「有効」チェックボックスOFF から ON にして有効にすると _enter_tree イベント関数で定義した print 文が出力され、 _enter_tree イベント関数呼び出されたことが確認できます。

Godot4 新しいプラグインの作成と有効化6

「有効」チェックボックスON から OFF にして無効にすると _exit_tree イベント関数で定義した print 文が出力され、 _exit_tree イベント関数呼び出されたことが確認できます。

Godot4 新しいプラグインの作成と有効化7

プロジェクト設定ダイアログで有効・無効化された際のイベント関数

_enable_plugin, _disable_plugin イベント関数を使うと、プロジェクト設定ダイアログで有効・無効化されたタイミングで処理を行えます。

## ユーザーがプロジェクト設定ウィンドウの [プラグイン] タブで EditorPlugin を有効にすると、エンジンによって呼び出されます。
func _enable_plugin():
	print("_enable_plugin called")
	return

## ユーザーがプロジェクト設定ウィンドウの [プラグイン] タブで EditorPlugin を無効にすると、エンジンによって呼び出されます。
func _disable_plugin():
	print("_disable_plugin called")
	return

Called by the engine when the user enables the EditorPlugin in the Plugin tab of the project settings window.

ユーザーがプロジェクト設定ウィンドウの [プラグイン] タブで EditorPlugin を有効にすると、エンジンによって呼び出されます。
EditorPlugin — Godot Engine (4.x)の日本語のドキュメント #method-enable-plugin と Google 翻訳

Called by the engine when the user disables the EditorPlugin in the Plugin tab of the project settings window.

ユーザーがプロジェクト設定ウィンドウの [プラグイン] タブで EditorPlugin を無効にすると、エンジンによって呼び出されます。
EditorPlugin — Godot Engine (4.x)の日本語のドキュメント #method-disable-plugin と Google 翻訳

まとめ

今回は、無料・軽快な 2D / 3D 用のゲームエンジン Godot Engine 4 で、独自のプラグインを新規作成するために必要な入力項目の説明と、作成したプラグインの有効・無効の切り替え方を紹介します。
また、プラグインが有効 / 無効になった際に呼び出されるイベント関数についても print 文で動作を確認しました。

参照サイト 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をコピーしました