UE5/UE4 C++で条件元の変数を非表示にした状態での条件付き変数をプロパティ指定子(Property Specifiers)を使って指定する(UPROPERTY(meta = (EditCondition=変数名)))
こちらを参考にさせていただきました。
・UE4 よく使うUPROPERTYメモ
https://qiita.com/bigengelt/items/b17545fffe7b8d69e5e8
条件付き変数を作成するには
「UPROPERTY」で「meta=(EditCondition = 変数名)」と指定することで実装することができます。
「条件となる変数の作成」と「条件によって変更できるようになる変素」の二つの変数が必要になります。
この変数の定義で「EditAnywhere」や「EditDefaultsOnly」を何も指定しない場合は、
条件付き変数の条件となる変数を非表示状態で、条件付き変数の方にくっつけた状態で制御することができます。
と、文章で書いててもよくわからないので実際にやってみます。
「EditAnywhere」や「EditDefaultsOnly」を指定した場合の条件付き変数はこんな感じになります。
// 条件付き変数(条件となる変数)
UPROPERTY(EditAnywhere, BlueprintReadWrite)
bool bEditConditionValue;
// 条件付き変数(条件によって編集可能となる変数)
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (EditCondition = bEditConditionValue))
int32 EditConditionValueInt;
上記の指定を行うとこんな感じで条件が真となる時のみ変数の変更が可能になります。

条件元となる変数「bEditConditionValue」が表示され、
チェックを付けることで「EditConditionValueInt」の変数の変更が可能になります。
この場合、条件元の変数「bEditConditionValue」と
条件付き変数「EditConditionValueInt」の関連はぱっと見ためだとよくわからないと思います。
これをわかりやすくするには「EditAnywhere」や「EditDefaultsOnly」の記述をなくします。
こんな感じですね。
// 条件付き変数1
UPROPERTY(BlueprintReadOnly)
bool bEditConditionValueTwo;
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (EditCondition = bEditConditionValueTwo))
int32 EditConditionValueInt;
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (EditCondition = bEditConditionValueTwo))
float EditConditionValueFloat;
// 条件付き変数2
UPROPERTY(BlueprintReadOnly)
bool bEditConditionValueOne;
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (EditCondition = bEditConditionValueOne))
FVector EditConditionVector;
上記のように条件付き変数を定義するとエディタではこんな感じに表示されます。

条件元となる変数「bEditConditionValueTwo」と「bEditConditionValueOne」はエディタに表示されません。
その代わりその変数を条件とする変数の横にチェックボックスが表示されます。
このチェックボックスを変更することで
条件元として定義した変数「bEditConditionValueTwo」と「bEditConditionValueOne」が切り替わります。

こんな感じで対応した条件付き変数への変更が可能になります。
二つの変数に対して条件元が設定してあった場合は片方を変更すると両方変更が可能になります。

変数の関連だったりはこちらの方がわかりやすいと思うので使っていきたいですね。
| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑