GDScriptの@toolを活用して Inspectorをカスタマイズする方法
Godot Engine バージョン4.3
Godotエディタ内で、スクリプトに対するインスペクターの表示をカスタマイズするには、
@tool
アノテーションを使うと非常に便利です。このチュートリアルでは、GDScriptの@tool
を使用して、_get_property_list
とnotify_property_list_changed
を活用する方法を学びます。
ステップ1: @toolの設定
まず、GDScriptファイルに
@tool
を追加します。これを行うことで、エディタのインスペクターでスクリプトがリアルタイムで動作するようになります。@toolextends Node
@tool
を使うことで、エディタ内でもスクリプトが実行され、インスペクターを動的に制御できるようになります。
ステップ2: _get_property_listの活用
次に、
_get_property_list
メソッドをオーバーライドして、インスペクターで表示するプロパティを動的に設定します。このメソッドはプロパティのリストを返す必要があります。var custom_property: int = 0
func _get_property_list(): var properties = [] properties.append({ "name": "custom_property", # プロパティ名 "type": TYPE_INT, # プロパティの型 "hint": PROPERTY_HINT_RANGE, # プロパティのヒント(値の範囲など) "hint_string": "0, 100, 1" # 範囲の指定(最小値, 最大値, ステップ) }) return properties
ここでは
custom_property
という整数型のプロパティをインスペクターに追加しています。PROPERTY_HINT_RANGE
を使って、0から100までの範囲を指定しています。
ステップ3: notify_property_list_changedの活用
プロパティの値を変更した際に、インスペクターにその変更を通知するには
notify_property_list_changed
を使います。このメソッドは、プロパティが変更された後にエディタに通知し、インスペクターの表示を更新させます。func _set_custom_property(value: int): if custom_property != value: custom_property = value notify_property_list_changed() # プロパティリストの更新を通知
この方法で、
custom_property
の値が変更されるたびにインスペクターが更新されます。
ステップ4: インスペクターでの表示確認
上記のスクリプトをGodotエディタで
Node
にアタッチします。エディタのインスペクターに、
custom_property
というプロパティが追加されていることを確認します。値を変更して、インスペクターがリアルタイムで反映されることを確認します。
ステップ5: 高度なカスタマイズ
さらに高度なカスタマイズとして、プロパティの可視性を動的に変更したり、プロパティに依存する他のプロパティを表示・非表示にすることも可能です。
例えば、特定の条件に基づいてプロパティを表示するには、次のように
_get_property_list
内で条件を追加します。var show_property: bool = true
func _get_property_list(): var properties = [] if show_property: properties.append({ "name": "custom_property", "type": TYPE_INT, "hint": PROPERTY_HINT_RANGE, "hint_string": "0, 100, 1" }) return properties
この方法で、
show_property
がtrue
の場合にのみcustom_property
がインスペクターに表示されます。
これで、
@tool
を活用してインスペクターを自由に設定する方法が理解できたと思います!次回も楽しみにしていてください。1
100%