Open3
EditorInspectorPluginでGodot Engineを使いやすくする
ピン留めされたアイテム
1. 下準備 : プラグインをセットアップ
EditorInspectorPlugin
クラスを使ってGodot Engineをカスタマイズするには、まずは自作プラグインのセットアップをする必要があります。これは数秒で終わります。
-
メインメニュー > プロジェクト > プロジェクト設定
でプロジェクト設定ウィンドウを開き、プラグインタブ
に移動します。 -
新しいプラグインを作成
ボタンを押します。
プラグイン設定画面から「新しいプラグインを作成」を選ぶ -
プラグイン作成ウィンドウが開いたら、プラグイン名を入力。基本的にはこれでOKです。もし外部に公開する予定があれば、作者名やバージョンなどを記入しましょう(後から変更もできます)。
プラグイン作成画面は最低限プラグイン名さえ入れれば、OK -
プラグインの作成が無事完了すると、
res://addons/
内にフォルダとファイルが作成されます。
作成されたフォルダとファイル一覧
これで、プラグインを作成する準備が整いました。
2. メインファイルのスクリプトを書く
下準備 : プラグインをセットアップの手順どおりにセットアップすると、addons/PLUGIN_NAME
フォルダに、プラグインで最初に読み込まれるファイル、PLUGIN_NAME.gd
が生成されていると思います。
- まずはこのファイルにコードを書く前に、今後プラグインの挙動を規定するスクリプトファイルを作ってしまいましょう。
addons/PLUGIN_NAME
フォルダの直下にinspector.gd
を作成しましょう。一旦最低限の内容でOKです。
inspector.gd
@tool # プラグイン内のスクリプトファイルは基本的に@tool宣言が必須です
extends RefCounted # Objectでもいいですが、RefCountedの方が管理が楽です
- 次はプラグイン作成時に生成されたファイルをいじってみましょう。
注意点としては以下の通りです。
-
EditorPlugin
を継承しましょう。 -
_enter_tree()
でadd_inspector_plugin()
、_exit_tree()
でremove_inspector_plugin()
メソッドを呼び出すことで、先ほど作ったスクリプトがプラグインを有効化・無効化した際に呼び出されたり、消去されたりします。特にremove_inspector_plugin()
を忘れてしまうと、プラグインを無効化してもインスタンスが残り続けてしまい、メモリを圧迫してしまいます。
PLUGIN_NAME.gd
@tool
extends EditorPlugin
class_name InspectorPlugin # 任意のプラグイン名にしましょう
# InspectorPlugin.Inspectorというクラス名があるかのように扱えるようになります。
const Inspector = preload("inspector.gd")
# 実際にinspector.gdのインスタンスを格納するための変数
var _inspector: Inspector
# プラグインが有効化された際に呼び出される
func _enter_tree():
_inspector := Inspector.new() # インスタンス化して格納する
add_inspector_plugin(_inspector) # インスタンスをプラグイン内で展開する
# プラグインが無効化される際に呼び出される
func _exit_tree():
remove_inspector_plugin(_inspector)