目次
・Bitmasks
・EditCondition
環境
・Visual Studio Community 2015
・Unreal Engine4.16
Bitmasks
meta = (Bitmask)
オンオフの切り替えが可能なフラグをドロップダウン形式で編集可能になります。
追加方法はUPOPERTYのmetaに"bitmask"を追加します。
UPROPERTY(EditAnywhere, Category = BitMask, meta = (Bitmask))
int bitTestFlag;
図のようにFlagが連番で並びます。
BitMaskのみのUPROPERTYを使用したいということはまずないでしょう。
そこで、列挙型と組み合わせて使用することがあります。
今回はゲーム中の攻撃をイメージして使ってみます。
列挙型定義
通常は攻撃とダメージ種別は分けるでしょう。
ですが、今回は説明のために統合された列挙型があると仮定します。
UENUM(meta = (Bitflags)) enum class EAttackType { Blow, // 打撃 Slash, // 斬撃 Shot, // 射撃 Cannon, // 砲撃 Damage, // ダメージを与える Heal, // 回復する Drain, // 吸収する };
変数定義
Bitmaskと合わせてBitmaskEnumを加えました。
UPROPERTY(EditAnywhere, Category = Attack, meta = (Bitmask, BitmaskEnum = "EAttackType"))
int8 attackType;
BitmaskEnumを加えることで理解しやすく意味のあるコードになりました。
さらにbitmaskは複数の状態を持たせる事ができます。
そのため
回復効果のある射撃
HP吸収の斬撃兼打撃属性の攻撃
等を作ることが出来ます。
(先も述べたように通常は分けます。このような使い方はしないでしょう。)
EditCondition
meta = (EditCondition = boolean)
プロパティの編集が許可されているかどうかを示すための条件を指定します。
ようはdetailタブから変更できるかどうかを切り替えるものです。
今度はゲーム中のfadeをイメージして使ってみます。
UPROPERTY(EditAnywhere, Category = Fade) bool isFade; UPROPERTY(EditAnywhere, Category = Fade, meta = (EditCondition = isFade)) float fadeTime;
遷移が禁止されている場合はFadeIn, Outの時間を変更できません。
遷移が許可されている場合はFadeIn, Outの時間を任意で変更することが可能になりました。
最後に余談ですが
UPROPERTY()のmetaの定義は大文字、小文字どちらでも可能です。
UPROPERTY(meta = (EditCondition = isFade))
UPROPERTY(Meta = (EditCondition = isFade))