LoginSignup
19
21

More than 5 years have passed since last update.

UnityでCSVを扱う。または如何にしてnugetを使って楽をするか。

Last updated at Posted at 2015-11-06

UnityでCSVファイルを読み込むときにCsvHelperを使うサンプルが見当たらなかった&フツーのC#な人たちはnugetを使うのがデフォルトといいますか、使い慣れてると思うんですがUnity周りの人たちは意外と知らなかったりするんじゃないかなーと思い、記載してみました。

Unityでは使えないライブラリも多いと思いますが、C#使っててnuget使わないともったいないかもですよ。


UnityでCSVを簡易に扱うなら
string line = reader.ReadLine();
string[] values = line.Split(',');
というようにSplitで「,」で区切るだけでもいいのですが、「,」がCSV文中に含まれている場合などに対応できません。
そこで、CsvHelperの助けを借ります。

CsvHelperはC#でCSVファイルを読み込むためのライブラリです。
http://joshclose.github.io/CsvHelper/

まずはnugetのサイトを開く。
画面左側のDownloadをクリックすると

csvhelper.X.X.X.nupkg (X.X.X部分はバージョン番号により可変)がダウンロードできる。
このファイルは実のところzipファイルなので適当な解凍ソフトで解凍する。

ss.png

/lib/net20 フォルダにあるCsvHelper.dllだけが必要。他のファイルは必要なし。
CsvHelper.dll をUnityプロジェクトのAssets以下のどこかに置く。

で、あとは以下のように使用します。

sample.cs

using System.IO;
using System.Text;
using UnityEngine;
using CsvHelper;


public class sample : MonoBehaviour
{
    void Load()
    {
        TextAsset csv = Resources.Load( "sample_csv" ) as TextAsset;

        StringReader    strReader = new StringReader(csv.text);
        CsvReader       csvReader = new CsvReader(strReader);

        while (csvReader.Read())
        {
            string[] records = csvReader.CurrentRecord;
            Debug.Log(records[0]);
            Debug.Log(records[1]);
            Debug.Log(records[2]);
        }
    }
}

CSVファイルの1行目は強制的にヘッダ行(フィールド定義行)とみなされるので注意。

自作クラスにマッピングする形での読み込み等もできる。
そのあたりの詳しくは以下リンク参照。

http://kageura.hatenadiary.jp/entry/2015/05/01/193000
http://kageura.hatenadiary.jp/entry/2015/05/20/200000

19
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
21