Open3

EditorInspectorPluginでGodot Engineを使いやすくする

ピン留めされたアイテム
SLMNLLSLMNLL

これは何?

Godot Engineは、EditorInspectorPluginクラスがあり、これを使ってIDE[1]自体のインスペクタを使いやすくすることが可能です。

しかし、素のGodot Engineも十分使いやすいこともあってか、EditorInspectorPluginを使ったプラグインの開発に関する情報があまりありません。

このスクラップではインスペクタ用の簡単なプラグインを作り、その手順をわかりやすく示すこと目的にしています。

脚注
  1. 統合開発環境。Godot Engineそのものを指します。 ↩︎

SLMNLLSLMNLL

1. 下準備 : プラグインをセットアップ

EditorInspectorPluginクラスを使ってGodot Engineをカスタマイズするには、まずは自作プラグインのセットアップをする必要があります。これは数秒で終わります。


  1. メインメニュー > プロジェクト > プロジェクト設定でプロジェクト設定ウィンドウを開き、プラグインタブに移動します。

  2. 新しいプラグインを作成ボタンを押します。

    プラグイン設定画面から「新しいプラグインを作成」を選ぶ

  3. プラグイン作成ウィンドウが開いたら、プラグイン名を入力。基本的にはこれでOKです。もし外部に公開する予定があれば、作者名やバージョンなどを記入しましょう(後から変更もできます)。

    プラグイン作成画面は最低限プラグイン名さえ入れれば、OK

  4. プラグインの作成が無事完了すると、res://addons/内にフォルダとファイルが作成されます。

    作成されたフォルダとファイル一覧

これで、プラグインを作成する準備が整いました。

SLMNLLSLMNLL

2. メインファイルのスクリプトを書く

下準備 : プラグインをセットアップの手順どおりにセットアップすると、addons/PLUGIN_NAMEフォルダに、プラグインで最初に読み込まれるファイル、PLUGIN_NAME.gdが生成されていると思います。

  1. まずはこのファイルにコードを書く前に、今後プラグインの挙動を規定するスクリプトファイルを作ってしまいましょう。
    addons/PLUGIN_NAMEフォルダの直下にinspector.gdを作成しましょう。一旦最低限の内容でOKです。
inspector.gd
@tool # プラグイン内のスクリプトファイルは基本的に@tool宣言が必須です
extends RefCounted # Objectでもいいですが、RefCountedの方が管理が楽です
  1. 次はプラグイン作成時に生成されたファイルをいじってみましょう。
    注意点としては以下の通りです。
  • 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)