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%