🦔

ゲーム開発のシチュエーションで学ぶLINQ:OrderByメソッド

2024/02/03に公開

はじめに

LINQをはじめて触る方が躓かない為に、実際にゲームのシチュエーションをもとに解説する「ゲーム開発のシチュエーションで学ぶLINQ」第3回目です。
今回は、データの並び変えを行うOrderByメソッドについてRPGを例に挙げながら紹介します。

ゲームのシチュエーション

題材

今回のシチュエーションは、RPG(ロールプレイングゲーム)を題材とします。

シナリオ

プレイヤーは、さまざまなキャラクターをパーティに加え、冒険を進めていきます。各キャラクターにはレベルや職業、攻撃力などのステータスがあります。プレイヤーが戦略的に戦うために、キャラクターを特定のステータスで並び替えたいときがあります。そこで、LINQのOrderByメソッドを用いて、ステータスに基づいた並び替えを実現できます。これを使えば、アイテム屋で攻撃力が高いアイテム順に並び替えたり、安いアイテム順に並び替える実装が簡単に組めます。

サンプルコード

以下のコードでは、パーティー内のキャラクターを攻撃力で昇順に並び替えています。

public class PartyManager : MonoBehaviour
{
    private List<Character> partyMembers;

    private void Start()
    {
        partyMembers = new List<Character>(FindObjectsOfType<Character>());
    }

    // パーティメンバーを攻撃力で並び替えるメソッド
    public List<Character> SortByAttackPower()
    {
        return partyMembers.OrderBy(character => character.AttackPower).ToList();
    }
}

OrderByメソッドの解説

OrderByメソッドはLINQにおいて、指定したキーの値に基づいて昇順に並び替えるメソッドです。逆順に並び替えたい場合は、OrderByDescendingメソッドを使用します。
これを応用することで、おまけであげる様なさまざまな実装をこなすことができます。

おまけ:他にもOrderByメソッドが使われるシナリオ

  • インベントリの整理: アイテムを価格、重量、種類などで並び替える際に使用。
  • 敵の優先度付け: 近くの敵や特定の属性を持つ敵を優先度順に並べるために使用。
  • クエストの整理: クエストを難易度、報酬、期限などで並び替える際に使用。
  • ショップ機能:ショップ内の安い商品や、強い商品を簡単に検索できる様になります。

おわりに

OrderByメソッドは、ゲーム開発における多岐にわたる場面で有用です。特定のステータスや属性に基づいて情報を整理する際に、このメソッドの活用を検討してみてください。次回も、さらに別のLINQメソッドについて解説しますので、引き続きお楽しみにください。

Discussion