Unity-Excel-Importer-Makerを利用してみました。
Unity-Excel-Importer-Makerとは?
ExcelファイルからScriptable Objectを生成してくれるUnity用ツールです。
作成はテラシュールブログ( http://tsubakit1.hateblo.jp/entry/2016/07/28/073000 )のtsubaki_t1さんです。
Unity-Excel-Importer-Makerを使うことにした理由
まず、試作中のミニゲームのマスタ作成の方針が次のようになっておりました。
- 原本となるデータはExcelで作成する。
- なんだかんだUIの使い勝手がいい。
- 後日CSVに吐き出して、といった方針転換もできる。
- ややこしいことをしたくなったときもVBAやC#連携でかなり乗りきれる。
- Scriptable Objectを利用する。
- 安心安定の公式。速度も十分らしい。
- 今回は他のプログラムとデータ形式を共通化する必要がない。
- データの確認は若干やり辛いが、規模が小さいため大丈夫と判断。
JSONやMessagePackでシリアライズする手もありますが、今回は公式の仕組みを使うことにしました。大抵それが一番安定する上、開発速度も処理速度も早い傾向があります――もちろん何事にも例外はありますが、何かあったらそのときはそのときです:)
そこで、「ExcelファイルからScriptable Objectを生成するまでの手順をどうするかなあ」と悩んでいたところ、そのものズバリのツールがあったので飛びついた次第です。
利用開始までの流れ
インストール
GitHubの該当ページから最新ソースをダウンロード。展開後、インポートしたいプロジェクトをUnityで開いてxlsx import.unitypackageを起動します。
インポート
無事インポートされたら、今度はページ下部の説明を参考にしてReimportまで実行します。
このようなExcelファイルから
読み込み
これだけで、作成されたクラスをアタッチしたコンポーネントからLINQで取得することができます。お手軽。
using System.Linq;
using UnityEngine;
public class LoadMasterTest : MonoBehaviour
{
public Entity_Monster MonsterMaster;
void Start()
{
var monster = MonsterMaster.param.Where(data => data.MonsterId == 1)
.FirstOrDefault();
if (monster != null)
{
Debug.Log(monster.MonsterId);
Debug.Log(monster.Name);
Debug.Log(monster.Hp);
} else
{
Debug.Log("読込失敗");
}
}
}
手間のかかるマスタデータのコンバートを簡単に実現できました。作者様に感謝!