GDScriptの@toolを活用して Inspectorをカスタマイズする方法


Godot Engine バージョン4.3

Godotエディタ内で、スクリプトに対するインスペクターの表示をカスタマイズするには、@toolアノテーションを使うと非常に便利です。このチュートリアルでは、GDScriptの@toolを使用して、_get_property_listnotify_property_list_changedを活用する方法を学びます。



ステップ1: @toolの設定

まず、GDScriptファイルに@toolを追加します。これを行うことで、エディタのインスペクターでスクリプトがリアルタイムで動作するようになります。
@tool
extends 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_propertytrueの場合にのみcustom_propertyがインスペクターに表示されます。


これで、@toolを活用してインスペクターを自由に設定する方法が理解できたと思います!次回も楽しみにしていてください。
最終更新日: 2025/02/13 01:38

コメント

    GDScriptの@toolを活用してInspectorをカスタマイズする方法 | GODOT TUTORIAL