CSVのデータをゲームで利用したい場合のアセットの使い方。クラスの準備が必要ですが、csvファイルのデータをそのまま使えたり、データの追加が簡単なのがポイントです!
CSVUtilityで出来ること
こちらのアセットで出来ることは基本的にCSVファイルとプログラムの連携です。
- CSVファイルのデータをプログラムでロードする
- プログラムのリストデータをCSVファイルに書き出す
ファイルの書き出しに関しては、PersistentDataPathに保存を行うため、スマホでの保存を行うことも可能です。
CSVファイルで扱うためのデータ準備
パッケージを手に入れる
CSVを簡単に使うためのパッケージをインポート。
パッケージマネージャーの左上の+ボタンから「Add package from git URL…」を選択して、以下のURLを入力してください
git+https://github.com/everystudio/ucp.csvutility.git
うまくいかない場合は、Githubのアカウントを作成・ログインを行うか、下記URLから「Code>Download ZIP」からプロジェクトをダウンロードして、Unityプロジェクトに追加しても利用可能です。
https://github.com/everystudio/ucp.csvutility
扱えるデータの型
CSVUtilityで扱えるデータの型は以下になります
- int
- float
- bool
- string
最悪stringがあるのでうまいことやれるはず。
サンプルデータ
次の項目でcsvファイルのロードテストを行ったりするのに使うデータを準備したいと思います。
今回取り扱うサンプルデータは以下
型 | 変数名 |
---|---|
int | test_int |
float | test_float |
で、上記テーブルにあるデータをCSVUtilityで扱いたい場合、次のようなスクリプトを準備してください。
using anogamelib;
public class SampleModelParam : CsvModelParam
{
public int test_int;
public float test_float;
public override string ToString()
{
return $"test_int={test_int} test_float={test_float}";
}
}
ToStringは後でデバッグ表示を見やすくしたいだけです。他にもbool型やstring型を追加してもい良いですし、2つのint型を追加することも出来ます。
CSVファイルの読み込み
CSVファイルの読み込みはいくつかの方法があります。
- TextAssetから読み込む
- PersistentDataPathにあるファイルを読み込む
csvファイルを用意する
先程用意したSampleModelに対応したcsvファイルを用意します。テキストファイルや表計算ツールを使ってcsvファイルを準備します。データは下図のような形式になっていればOK。
TextAssetからロードする
個人的には一番使いやすい方法かと思います。DemoScriptファイルを作成し、以下のようなスクリプトを準備します。
using UnityEngine;
using anogamelib;
public class DemoScript : MonoBehaviour
{
[SerializeField] private TextAsset localCsvFile;
private void Start()
{
CsvModel<SampleModel> sampleModel = new(localCsvFile);
sampleModel.CheckDebugLog();
}
}
準備できたらシーン内のGameObjectにアタッチ。インスペクターにテキストアセットをセットする箇所が出来るので、作成したcsvファイルをセットしてください。ゲームを実行すると、以下のようなログが表示されます。
PersistentDataPathからロードする
こちらはインスペクターのセットを必要としないファイルロードになります。PCで試す場合は、事前に「C:\Users\{ユーザー名}\AppData\LocalLow\{プロジェクトのカンパニーネーム}\{プロジェクト名}」のフォルダにcsvファイルを配置してください。下図は私の環境でtest_file.csvというcsvファイルを設置しています。
以上の設定が完了したらスクリプトにロードする処理を書き加えましょう。先程のプログラムを変更します。変更ついでに各パラメータに直接アクセスする方法も覚えましょう。
ログは1行ごとに分割されますが、foreach文で各データへアクセスすることが出来るのが確認できたと思います。
CSVファイルを保存する
セーブデータの様に、変更したモデルデータを再びcsvファイルに保存・エクスポートすることが可能です。
下記スクリプトを参考に用意してください。下記スクリプトではテスト用データを2つ追加し、”save_file”というファイル名で保存を行います。デバッグログに保存されたパスも表示されますので、保存先のファイルを確認して見てください。
コメント