ひとりでのアプリ開発 - fineの備忘録 -

ひとりでアプリ開発をするなかで起こったことや学んだことを書き溜めていきます

Unity - CSV Serializer:CSVファイルを読み込む -

初めに

 Excelでまとめたテキストデータやステータスをそのまま Unity に読み込みたい場合、CSVファイルにしてデータを読み込むことができます。本記事は、CSVファイルを読み込むために使われるアセット「CSV Serializer」についての記事になります。

CSV Serializer

assetstore.unity.com

ダウンロード、インポートの仕方

 以前、AssetStore の使い方を記事にしていますので、そちらをご覧ください。

fineworks-fine.hatenablog.com

CSVSerializer.Deserialize:データを流し込む

 CSVファイルのデータを流しこむために必要なものは次の通りです。

  • [System.Serializable]属性をつけたクラス:流し込みたいデータの一覧
  • データを流し込む処理が書かれたスクリプト
  • データが書かれたCSVファイル

[System.Serializable]属性をつけたクラス

[System.Serializable]
public class CharaData
{
    public string name;
    public int Hp;
    public int Power;
}

データを流し込む処理が書かれたスクリプト

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

public class csvTestScript : MonoBehaviour
{
    public CharaData[] charaData;

    void Start()
    {
      // テキストファイルの読み込みを行ってくれるクラス
        TextAsset textasset = new TextAsset();
        // 先ほど用意したcsvファイルを読み込ませる。
        // ファイルは「Resources」フォルダを作り、そこに入れておくこと。また"CSVTestData"の部分はファイル名に合わせて変更する。
        textasset = Resources.Load("CSVTestData", typeof(TextAsset)) as TextAsset;
        // CSVSerializerを用いてcsvファイルを配列に流し込む。
        charaData = CSVSerializer.Deserialize<CharaData>(textasset.text);
    }
}

データが書かれたCSVファイル

 GameObject にスクリプトをつけ、実行してみます。
(実行結果)

CSVファイルを作る際の注意点

 文字コードの関係で、下のように文字化けを起こすことがあります。

 このままでは読み込めないので、下記のように文字コードUTF-8 に変更しましょう。

  • 通常通りCSVファイルで保存する


  • CSVファイルを右クリックし、メモ帳でファイルを開く


  • 名前をつけて保存から、文字コードUTF-8に変更する。ファイルの種類はすべてのファイルを選択し、末尾に .csv を記述する

 これで文字化けがなくなりました。

参考

qiita.com

最後に

 本記事では CSVファイルを読み込むところまでまとめました。ここから読み込んだデータをオブジェクトに流し込み、ScriptableObject と呼ばれるものをつくることができます。それについては、後日記事にします。