BLOGブログ

2026.02.04UE5UE/ C++

[UE5] カテゴリの表示順を操作する

執筆バージョン: Unreal Engine 5.7.1

レベルにアクターを配置したとき独自カテゴリが下に埋もれてしまっている経験をめちゃくちゃします。
触ってほしいプロパティなのでできればTransformの下あたりに来てほしいところです。

UCLASSやUPROPERTYのパラメーターで操作できないかと調べてみたところ、
「PrioritizeCategories」を見つけて使用してみましたが変化がなし…。

カテゴリの表示順をどうすれば操作できるのか気になったので調べました。

 

Detailsパネルに表示されるカテゴリ順の仕組み

※例として以下のクラスを使用します。

 

カテゴリ順が決まる流れは大きく3つに分かれるようです。

①クラスからカテゴリとプロパティの収集

対象のクラスから親クラスまで遡って、定義されているプロパティとそのカテゴリを上から順々に収集します。
ここでベースとなる最初の並び順が決まります。

そして以下のような情報が生成されます。

補足:

  • Detailsパネルに表示対象のプロパティのみ(VisibleAnywhereなど)
  • PrioritizeCategories」はこの段階で収集したカテゴリを並び替える
  • カテゴリの最初のプロパティがBlueprint非公開だと、優先順位が下がる

 

②Detailsパネルのレイアウトの構築

①の情報を使用して、実際にDetailsパネルへ表示するレイアウトを構築します。

この時、

Componentプロパティは内部に持っているプロパティまで含めて展開されます。

展開されたプロパティのカテゴリも追加されるため、Componentプロパティの定義順によってはカテゴリが途中に割り込んで順番がずれることが発生します。

 

③カスタマイズが適用され、最終的な順番になる

UE5にはクラス単位でDetailsパネルをカスタマイズをする仕組みがあり、登録されているカスタマイズ内容がここで適用されます。

エンジン側でも多くのクラスがカスタマイズされており、

  • Transform:FActorDetails
  • StaticMesh:FStaticMeshComponentDetails
  • Animation:FSkeletalMeshComponentDetails

などのカテゴリは、意図的に上の方に来るよう設定されています。

ここまでくると独自でカスタマイズしない限り、順番には干渉できません。

 

できる範囲でカテゴリ順をいい感じにする

①埋もれないようにする基本テクニック

1.Componentプロパティをクラス先頭に置かないようにする

そのあとの独自カテゴリよりもComponentが内部に持っているカテゴリとプロパティが先に表示されてしまいます。

2.Blueprintに公開されるプロパティを先頭に置く

カテゴリ最初のプロパティがBlueprintReadOnly、BlueprintReadWriteでないとカテゴリの優先順位が低くなります。

3.AdvancedDisplayが含まれているプロパティのみにしない

カテゴリ内が「AdvancedDisplay」が含まれているプロパティのみだと、普通のプロパティを含んでいるカテゴリよりも優先順位が低くなります。

②クラス指定子について

1.PrioritizeCategoriesはそのクラスが持つカテゴリだけ

カテゴリの優先順位を操作するクラス指定子の「PrioritizeCategories」は、最初のカテゴリ収集時に適用されるため、そのあとに展開されるComponent内部のカテゴリには影響されません。

2.HideCategoriesはそのクラスが持つカテゴリだけ

カテゴリを非表示にできるクラス指定子の「HideCategories」は、最初のカテゴリ収集の範囲内のカテゴリが対象です。Componentにしか存在しないカテゴリは非表示にできません。

例として、StaticMeshComponentのStaticMeshカテゴリはActor側でHideCategoriesしても非表示にはできません。

 

AMyCharacterを改善してみる

先ほどのAMyCharacterはStaticMeshComponentプロパティが先頭にいることで悪さをしているので、下に移動させましょう。

ただ、Transform、StaticMesh、Animation、Meshはエンジン側がカスタマイズで意図的にカテゴリの優先順位を上げているため、これ以上はこのままでは上げられません。

 

Detailsパネルのカスタマイズ

Detailsパネルのカテゴリやプロパティを追加や編集することができる機能です。
エンジンのカスタマイズを上書きしたい場合はこの機能を使用する必要があります。

様々なことができる機能ですが、さわりとして登録手順とカテゴリに関しての機能をご紹介します。

※本機能はエディタ機能のため、エディタモジュール内での実装となります。
エディタモジュールの追加方法については、本記事では割愛させていただきます。

①登録手順

今回はAMyCharacterクラスのDetailsパネルをカスタマイズします。

1.IDetailCustomizationを継承したクラスを作成

2.FMyCharacterDetailsの登録

 

②カテゴリの操作機能

1.カテゴリ順の操作

EditCategory関数を使用することでCategoryの編集を行うことができます。
引数としてECategoryPriorityを設定してカテゴリ順を変えることが可能です。

2.カテゴリを非表示にする

HideCategory関数を使用してカテゴリを非表示にします。

 

 

カテゴリ周りを少し整えるだけで、Details パネルの利便性は大きく向上します。
改めて意識していきたいです。