UnityでExcelからScriptableObjectを作る "QuickSheet" を試してみた

http://kimsama.github.io/excel-howto/

  • 表データはある
  • ScriptableObjectにしたい
  • 管理はExcelでしたい
  • 上に書いてあるようにやればできた
  • シート名はクラス名になるので、デフォルトのSheet 1(スペースを含む)だと生成コードで文法エラーになる
  • MacのPagesでxls出力はできるが、上書き保存はしづらい
  • Google Spreadsheetにも対応している
  • この前にG2Uというアセットも使ってみたが、生成コードに列名がデータ数分だけ書かれて長かったので、今回はQuickSheetを使ってみた
  • ScriptableObjectができた

f:id:peroon:20151123015635p:plain

  • 他のコードから使用する例
public FirstNameSheet firstNameSheet; // インスペクタからScriptableObjectを参照しておく

...

// リストからランダムに名前取得
private string GetRandomName(){
    int index = Random.Range (0, firstNameSheet.dataArray.Count() - 1);
    return firstNameSheet.dataArray[index].Firstname;
}

12/18追記

f:id:peroon:20151218173535p:plain

  • Mac Numbersでデータの表を作る。表のタイトルは消す
  • 不要な列と行も消す
  • xlsで出力する
  • デフォルトの形式じゃないので上書き保存できず、少し手間 (この改善にはMacExcelを買うしかない?)
  • インポートの設定ファイルは1つ
  • 出力先ディレクトリを作成しておく
  • 設定ファイルからGenerate実行
  • まずクラス生成
  • 次に、ExcelをUnityからReimportするとScriptableObjectが作成される

フローとしては、

  • 企画がxlsを更新してコミット
  • エンジニアが落としてくる, UnityでReimportで更新

で済む。Reimportだけで全部更新できるのがGood.

xlsをもっと気軽に更新したい

  • 環境はMac
  • 1人で開発しているときは頻繁にxlsを書き換えて実行を繰り返す
  • NumbersでExportは避けたい
  • そこで... OpenOffice
  • xlsを開いてそのまま上書きできる
  • xlsは開きっぱなしにしておいて、上書きし、Unity側でReimport
  • また調整したくなったら開いているxlsを書き換える
  • 結構手軽になったね!