本記事はUnreal Engine (UE)のカレンダー | Advent Calendar 2023 - Qiita シリーズ5の 4日目の記事です
はじめに
ホグワーツレガシーの開発者による講演「Collision Data in UE5: Practical Tips for Managing Collision Settings & Queries(Unreal Engine 5での衝突データ: 衝突設定とクエリの管理に関する実用的なアドバイス)」にて、「Collision Presetの設定状況に応じて表示ONOFFするEditorUtilityを作ると視覚的に確認できていいぞ」という内容がありました。が、具体的にどうすればいいのかは説明がなかったので試しに作ってみました。
アメリカのUnrealFestでホグワーツレガ以下略、Collision Preset設定の確認用に表示ONOFFする仕組みができた!
— おかず (@pafuhana1213) 2023年12月12日
Collision Presetの名前一覧を取ってくるのにC++が必要だった
UCollisionProfile::Get()->GetProfileNames#UE5 #UE5Study https://t.co/V9YQpAPu7B pic.twitter.com/6Rt8mf92fk
これを作る過程で「Collision Presetのリスト情報」を取得する処理が欲しくなったので調べた結果を記事にしました。
なお、上述の講演に関しては下記記事にて内容をまとめています。
pafuhana1213.hatenablog.com
Collision Presetのリスト情報を取得する方法
void UMyBlueprintFunctionLibrary::GetCollisionProfileNames(TArray<FName>& OutNameList) { TArray<TSharedPtr<FName>> ProfileNameList; UCollisionProfile::Get()->GetProfileNames(ProfileNameList); for (TSharedPtr<FName> NamePtr : ProfileNameList) { OutNameList.Add(*NamePtr); } }
上記関数 or ノードで取得したリスト情報を元にEditorUtilityの要素を自動生成する実装にすることで、Presetが増減してもEditorUtility側を更新しなくていいので便利なはずです!
なおCustomは上記処理で取得できるリストには含まれていないため、もし必要な場合は明示的に追加する必要があります。
おしまい