どうもこんにちは
初投稿で至らないこともあると思いますがよろしくお願いします。
エンジンのバージョンは4.24.3です。
今回実現したいことはエディター上の配列の概要を展開前に表示させることです。
↑UE4エディター上で配列の要素を展開しないと中身の情報がわからない...
上記のように配列を展開すると中の情報が見れるのですが、
展開するまでは要素数しか表示されていない状態です。
もし要素が大量に増えてしまったとき一つ一つ展開して中を確認するのは非常に面倒です。
そこで
↑meta指定子の[TitleProperty]を使用すると展開前に中身の情報を知ることができるようになります。
こちらの表示方法について記述します。
まずはC++で公開エディター上に公開する配列と
配列の型として使用する構造体を定義します。
UENUM() enum class EMyCharacterType : uint8 { Tom UMETA(DisplayName = "トム"), Jenny UMETA(DisplayName = "ジェニー"), Otsuka UMETA(DisplayName = "大塚"), MAX UMETA(Hidden), }; USTRUCT() struct FMyCharacter { GENERATED_BODY() FMyCharacter() : type (EMyCharacterType::Tom) , HP (0.0f) { } UPROPERTY(EditAnywhere) EMyCharacterType type; UPROPERTY(EditAnywhere) float HP; }; UCLASS() class MYPROJECT13_API AMyActor : public AActor { GENERATED_BODY() public: UPROPERTY(EditAnywhere) TArray<FMyCharacter> characterList; };
こちらで実行しアクターをレベルに配置してエディターからcharacterListを閲覧してみましょう。
このままでは冒頭に述べたように要素を展開するまで中身がわからない状態です。
そこでcharacterListのUPROPERTY指定子に[TitleProperty]メタデータ指定子を使用します。
UPROPERTYを以下のように変更します。
UPROPERTY(EditAnywhere, meta = (TitleProperty = "type")) TArray<FMyCharacter> characterList;
するとエディター上では選択した変数の値を要素の概要として表示してくれるようになります。
※[TitleProperty]に指定できるのは構造体内のUPROPERTY変数名。
特にデータテーブル等で大量に配列の要素が増える場合に役に立ちそうです。
TitlePropertyで使用が確認できた変数の型
- int
- float
- FName
- FString
- enum class(UEnum付)
- TArray:(要素1,要素2,要素3)のように羅列される
TitlePropertyの反映条件
- UPROPERTY指定子が使用されている
- VisibleAnywhere等少なくともエディタから見えるように設定されている
他メモ
- キャストはできない
例) TitleProperty = "(int)enum value" や TitleProperty = "(enum class)int value"のようにキャストはできなかった。
こちらを参考にさせていただきました。
You can make your #UE4 C++ arrays much easier to read in Blueprint by setting TitleProperty meta specifier with the variable name you want to display. No more opening every entry to figure out which one you're looking for... #cpp #gamedev pic.twitter.com/yNb9sK9Jin
— Tom Looman (@t_looman) 2019年7月31日
閲覧していただきありがとうございます。