先日、公式でカスタムアクションとカスタムプラグインの機能が追加されました。私はすぐにそれらを試し、自分のプロジェクトで使えるプラグインの作成を始めましたが、すぐに問題に気づきました。それは、状況に応じてより多くの異なるパラメータが必要になることがあり、それが非常に混乱を招くということです。@export_group() を使用してグループ化することで一部の問題は解決できるかもしれませんが、エディタ上でタブを頻繁に展開したり折りたたんだりするのが面倒に感じることがあります。そこで、公式のアクションでは異なるオプションを選択すると異なるパラメータが表示される機能があることに気づき、そのような効果を実現する方法を学び始めました。
ここでは、会話プラグインを作成していると仮定します。
まず、コードの先頭に以下を記述する必要があります。
@tool
もちろん、これはプラグインの基本です。次に、変数を宣言します。まずはブール値を使用してみましょう。
@export var is_dialogue : bool= false
OK、これで制御スイッチができました。次に、その内部のプロパティが必要です。
@export_multiline var text : String
プラグインを開いて、現在の状態を確認してみましょう。
素晴らしいですね。プロパティがすべて上部に表示されています。ここからがポイントです。別の変数を宣言しましょう。
var contorl_dialogue : bool
この変数の型は、最初に定義した is_dialogue と同じです。
そして、最初の変数を以下のように修正します。
@export var is_dialogue : bool= false:
set(v):
contorl_dialogue = v
notify_property_list_changed()
get:
return contorl_dialogue
次に、メソッドを追加します。
func _validate_property(prop: Dictionary) -> void:
match prop.name:
"character_name":
if is_dialogue == false:
prop.usage &= ~PROPERTY_USAGE_EDITOR
"text":
if is_dialogue == false:
prop.usage &= ~PROPERTY_USAGE_EDITOR
では、効果を確認してみましょう。
いいですね。これで私たちのニーズを満たすことができます。オプションがある場合のみ、このコードブロックが表示されます。もちろん、列挙型に置き換えることもできます。
enum Type {
dog,
cat,
cow
}
前述の宣言と条件判断を組み合わせることで、同じ効果を実現できます。適切に使用することで、プラグインの可読性と整理整頓を大幅に向上させることができます。


