ぼっちプログラマのメモ

UE4とかUE5とかについて書いたり書かなかったり。

【UE5】Collision Presetのリスト情報を取得する方法について(GetProfileNames)

本記事は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を作ると視覚的に確認できていいぞ」という内容がありました。が、具体的にどうすればいいのかは説明がなかったので試しに作ってみました。

これを作る過程で「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は上記処理で取得できるリストには含まれていないため、もし必要な場合は明示的に追加する必要があります。

おしまい