はじめに
UE5.8 の Mover プラグインのソースを眺めていたら、見慣れないメタ指定子に遭遇しました。
// Mover/Source/Mover/Public/MoverComponent.h:923 UPROPERTY(EditDefaultsOnly, EditFixedSize, Instanced, Category = Mover, meta = (NoResetToDefault, ObjectMustImplement = "/Script/Mover.MovementSettingsInterface")) TArray<TObjectPtr<UObject>> SharedSettings;
ObjectMustImplement...?MustImplement ならよく見るんですが、ObjectMustImplement は見慣れないですしググっても出てこない…
なにやら便利そうなので、Object/Classプロパティのフィルタリングで使う他のmeta指定子と合わせて調査・検証結果をまとめてみました。
(GetAllowedClassesもググっても情報出てこないですし)
検証環境:UE5.8 Preview
本記事の結論
少し長くなるので結論早見表・結論をぺたり
| メタ | 非Instanced (Asset picker) | Instanced (EditInline) | Class picker (TSubclassOf) |
|---|---|---|---|
MustImplement |
▲ | ❌ | ✅ |
ObjectMustImplement |
▲ | ✅ | ❌ |
AllowedClasses |
✅ | ✅ | ✅ |
GetAllowedClasses |
✅ | ▲ | ▲ |
状況に応じてフィルタリング処理を変えたい場合はGetAllowedClasses を利用(後述の仕様に注意)。
固定で良い場合は…
- 非Instanced な Object:
AllowedClasses - Instanced Object:
ObjectMustImplement - Class系プロパティ:
MustImplement
( AllowedClasses でも実装可能だが、速度面・安全面から MustImplement /ObjectMustImplementを利用した方が無難 )
以降は詳細や調査内容・結果について
続きを読む



