2022.4.14 今回はUnityでExcelのデータを取得していきます。
目的
ゲーム会社でプロジェクトを見ながらスクリプトを見ていると、データをExcelで管理していることが多く、どうやっているのか疑問に思ったからです。
参考資料
今回参考にしたのは、以下のリンクの記事です。
https://squmarigames.com/2018/12/12/unity-excel-importer-maker/
実践
1.Excel Importer をダウンロードする
以下のリンクをクリックして、GitHubに移動します。
https://github.com/tsubaki/Unity-Excel-Importer-Maker
CodeボタンからDownload ZIPを選択し、ダウンロードしたzipを解凍します。
解凍してできたファイルの中のAsset内にある「Terasurware」フォルダをUnityのプロジェクト内にドラック&ドロップします。
2.Excelデータを作成する
インポートするExcelを作成していきます。
作成する際は、
・拡張子を「.xls」とする
・複数のシートはフォーマットをそろえる
作成したExcelデータはAssetsフォルダ内に入れます。
入れたExcelデータを右クリックして、
「XLS Import Settings...」という項目を選択します。
・class name
Excelをインポートする用のクラスを作成するためのクラス名です。変更しても、そのままでも問題ないそうです。
・Sepalate sheets
Excel内に複数のシートがある場合、シートごとに読み込むかどうかの設定です。
シート内の1行目のアルファベットは全シートで統一する必要があります。
・Parameter settings
Excelシートの変数名は入力されているので、それに対応した型名を右のタブから設定します。
設定が終わったら「Create」ボタンを押します。
すると、Terasurware/Classes内に「Entry_Sheet1.cs」、
Terasurware/Classes/Editor内に「"作成したExcelの名前"_importer.cs」ができています。
※今回は「Unity_Study.xls」という名称で作成しました。
3.スクリプトの更新、作成
Terasurware/Classes/Editor内に作成したスクリプト内の以下の部分をExcelが入っている場所とassetが入っている場所に変更します。
public class Unity_Study_importer : AssetPostprocessor {
private static readonly string filePath = "Assets/Unity_Study.xls";
private static readonly string exportPath = "Assets/Resources/Unity_Study.asset";
今回はコンソールにExcelから読み取ったデータを表示したいので、そのコードを書いていきます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using System.IO;
public class ImportExcelData : MonoBehaviour
{
Entity_Sheet1 es;
// Start is called before the first frame update
void Start()
{
es = Resources.Load("Unity_Study") as Entity_Sheet1;
Debug.Log("numberの1行目:" + es.sheets[0].list[0].number);
Debug.Log("namerの1行目:" + es.sheets[0].list[0].name);
Debug.Log("numberの2行目:" + es.sheets[0].list[1].number);
}
// Update is called once per frame
void Update()
{
}
}
以下のコードを追加します。
using System;
using System.IO;
ResourcesフォルダからUnity_Study.assetファイルを読み込みます。
es = Resources.Load("Unity_Study") as Entity_Sheet1;
Sheets[n] でn枚目のシートを指定
list[n]でn行目のデータを選択
numberでnumberの列のデータを取得します。
今回はやり方を学べたので、次は応用していきたいです。