パープルハット

※当サイトではGoogleアドセンス広告を利用しています

Unity CSVファイルの読み取り



CSVファイルの作成

  • 今回はエクセルからCSVファイルを作成しました。
  • エクセル内でセルに以下のように入力を行い、「CSV UTF-8(コンマ区切り)」形式で「Sample.csv」という名称のCSVファイルを作成しました。
A B C
1 名前 買値 売値
2 木の棒 5 1
3 鍋蓋 10 2
4 甲冑 1000 500


また、このCSVファイルをメモ帳で開くと次のようになっています。

名前,買値,売値
木の棒,5,1
鍋蓋,10,2
甲冑,1000,500




プロジェクトにCSVファイルを追加

先ほど作成したファイルをドラッグアンドドロップでプロジェクト内に追加します。



スクリプト

プロジェクト内に次のファイル「ReadCSV.cs」を作成します。
今回はCSVファイルを読み込み2行1列の要素(「木の棒」)の文字列を読み取ります。

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

public class ReadCSV : MonoBehaviour
{
    [SerializeField] TextAsset csvFile;// CSVファイル

    private void Start()
    {
        //CSVファイルの中の文字列をList<string[]>型で取得
        var csvContent = ReadCSVFile(csvFile);

        //CSVファイル内の2行1列目のデータ(木の棒)を表示
        Debug.Log(csvContent[1][0]);
    }

    List<string[]> ReadCSVFile(TextAsset csvFile)//CSVファイルを読み取る
    {
        //1行ごとに配列としてCSV読み取り、それをリストに変換する
        List<string> list = File.ReadAllLines(AssetDatabase.GetAssetPath(csvFile)).ToList();

        //1行ごとの文字列を更に、カンマで区切る
        List<string[]> lists = new List<string[]>();
        for (int i = 0; i < list.Count; i++)
            lists.Add(list[i].Split(','));

        return lists;
    }
}




スクリプトのアタッチから実行

  1. 現在のシーン内に空のゲームオブジェクトを作成(ショートカット:Ctrl+Shift+N)して、先ほど作成したスクリプトをアタッチします。
  2. 「ReadCSV」内の変数「csvFile」に「Sample.csv」をドラッグアンドドロップで追加します。
  3. ゲームを実行するとコンソールウィンドウに「木の棒」と表示されます。




関連記事(発展)

  • エディタウィンドウを用いてCSVファイルからScriptableObjectの作成する方法です。

kiironomidori.hatenablog.com

  • エディタウィンドウを用いてCSVファイルからスクリプト内のenum(列挙型)を再構築する方法です。

kiironomidori.hatenablog.com