TArrayのソートについて

倒した敵の数、階層、プレイ時間からなる構造体を入れた配列があります。

struct Scores
{
	Scores(const uint32& Defeat, const uint32& Floor, const float& PlayTime) 
		: DefeatEnemy(Defeat), Floor(Floor), PlayTime(PlayTime) {}
	uint32 DefeatEnemy;
	uint32 Floor;
	float PlayTime;
};

TArray<Scores> Score;

その配列をとりあえずプレイ時間でソートできるように

struct FSortByPlayTime
{
	Scores Score;
	FSortByPlayTime(const Scores& In) : Score(In){}

	bool operator() (const Scores& A, const Scores& B) const
	{
		return A.PlayTime < B.PlayTime;
	}
};

こんな感じで降順ソートをするコードを書きました。が、FSortByPlayTime内に追加で

bool operator() (const Scores& A, const Scores& B) const
{
    return A.PlayTime > B.PlayTime;
}

と書いて昇順でもソートできるようにしたいのです。当たり前ですが、これだと動きません。

昇順用の構造体と降順用の構造体を別々に作らないといけないのでしょうか?

何か良い方法があれば教えて下さい。よろしくおねがいします。

下記ドキュメントのソートの項は読みましたか?

構造体の配列をソートするだけであれば、別途構造体を書く必要はないと考えます
下記、こちらで試したコードのサンプルと結果です

構造体定義

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

読んでませんでした。

なにか複雑に考えていたようです。ありがとうございました!