はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】リストをディクショナリに変換する方法

はじめに

今回はList<T>をDictionary<TKey,TValue>に変換することについての記事になります!

変換するにはLINQを使うので、もし「LINQってなんだっけ?」という方はこちらを見てみてから続きをみるとスムーズに理解が進むと思います。

hanaachiru.hatenablog.com

変換方法

using UnityEngine;
using System.Collections.Generic;
using System.Linq;

public class Enemy
{
    public string Name { get; set; }
    public int Hp { get; set; }
    public int Exp { get; set; }
}

public class Hoge: MonoBehaviour
{
    private void Start()
    {
        var enemyList = new List<Enemy>
        {
            { new Enemy{ Name = "スライム", Hp = 5, Exp = 10 } },
            { new Enemy{ Name = "ももんじゃ", Hp = 10, Exp = 20 } },
            { new Enemy{ Name = "ドラキー", Hp = 20, Exp = 30 } },
            { new Enemy{ Name = "メタルスライム", Hp = 3, Exp = 100 } },
        };

        var enemyDict = enemyList.ToDictionary(enemy => enemy.Name);
        
        foreach(var item in enemyDict)
        {
            Debug.Log(item.Key + ": " + item.Value.Exp);    //スライム: 10 ・・・ メタルスライム: 100
        }
    }
}

これはList<Enemy>をDictionary<string,Enemy>に変換しています。
リストからディクショナリに変換するにはToDictionayメソッドを用いることで可能です。
また第一引数のラムダ式で何をキーにするかを決めることができます

さいごに

ディクショナリはキーを指定して高速にアクセスすることが可能になります。
是非用途に応じて使ってみてください!