下記ドキュメントのソートの項は読みましたか?
構造体の配列をソートするだけであれば、別途構造体を書く必要はないと考えます
下記、こちらで試したコードのサンプルと結果です
構造体定義
struct FScore
{
FScore(const uint32& ID, const float& PlayTime)
: ID(ID), PlayTime(PlayTime) {}
uint32 ID;
float PlayTime;
};
テストコード
TArray<FScore> Scores;
FMath::RandInit(0);
for (int i = 0; i < 5; ++i)
{
Scores.Add(FScore(i, FMath::FRandRange(0.0, 50.0)));
}
// ソート無しで出力
UE_LOG(LogTemp, Log, TEXT("NO SORT"));
for (auto Score : Scores)
{
UE_LOG(LogTemp, Log, TEXT(" - PlayTime=%f, ID=%d"), Score.PlayTime, Score.ID);
}
// 昇順ソート
UE_LOG(LogTemp, Log, TEXT("SORT ASC"));
Scores.Sort([](const FScore A, const FScore B) {
return A.PlayTime < B.PlayTime;
});
for (auto Score : Scores)
{
UE_LOG(LogTemp, Log, TEXT(" - PlayTime=%f, ID=%d"), Score.PlayTime, Score.ID);
}
// 降順ソート
UE_LOG(LogTemp, Log, TEXT("SORT DESC"));
Scores.Sort([](const FScore A, const FScore B) {
return A.PlayTime > B.PlayTime;
});
for (auto Score : Scores)
{
UE_LOG(LogTemp, Log, TEXT(" - PlayTime=%f, ID=%d"), Score.PlayTime, Score.ID);
}
結果
LogTemp: NO SORT
LogTemp: - PlayTime=0.057985, ID=0
LogTemp: - PlayTime=11.778619, ID=1
LogTemp: - PlayTime=32.407604, ID=2
LogTemp: - PlayTime=3.718680, ID=3
LogTemp: - PlayTime=13.512070, ID=4
LogTemp: SORT ASC
LogTemp: - PlayTime=0.057985, ID=0
LogTemp: - PlayTime=3.718680, ID=3
LogTemp: - PlayTime=11.778619, ID=1
LogTemp: - PlayTime=13.512070, ID=4
LogTemp: - PlayTime=32.407604, ID=2
LogTemp: SORT DESC
LogTemp: - PlayTime=32.407604, ID=2
LogTemp: - PlayTime=13.512070, ID=4
LogTemp: - PlayTime=11.778619, ID=1
LogTemp: - PlayTime=3.718680, ID=3
LogTemp: - PlayTime=0.057985, ID=0