前回の応用で、Excelの中身をScriptableObjectとして保持するようにした。
より良い方法があったので、そちらをどうぞ。
tsubakit1.hateblo.jp
Excelみたいなデータとして大きく効率が悪いフォーマットからランタイムで引っ張ってこようとすると、馬鹿みたいに時間がかかってしまうし、メモリも食い散らかしてしまう。
ScriptableObjectにすれば効率的にResourcesから動的に読み込んだり、シーン内に組み込んだりできる。それにJSONより小さい(バイナリベースなので)
そして何よりAndroid/IOSで使用できる。ScriptableObjectはUnityの基本機能なので、AOTだろうがJITだろうがiOSだろうがAndroidだろうがBasicだろうが関係なく使用出来る。
(この手の物はAOT≒iOSで動かない事がけっこう多い)
なので、Excel更新時にScriptableObjectに流しこむ部分を自動化した。
参考はコレ
unity3d-jp/XmlToCustomAsset
https://github.com/unity3d-jp/XmlToCustomAsset
作成したパッケージはコレ。
なお入力するExcelData.xlsや出力するExcelData.assetのパスは固定なので、変更しないように注意。
遊び方はこんな感じ
ExcelData.xlsを開く。OpenOfficeやOfficeがあれば開ける。
中身を書き換える。絵はOpenOffice。
UnityEditorに戻ると自動的にExcelData.xlsが再インポートされ、ExcelData.asstが出力される。以降、Excel.xlsが変更される度にExcelData.assetの中身を変更する。
ScriptableObjectに流し込んだ図。入力不可なのはscriptableObjectのhideFlagsをHideFlags.NotEditableに設定しているため。
(ワークフロー的に簡単に上書き出来てしまう場合混乱するので、逆方向は無しにした)
ScriptableObjectに流し込んだので、参照を与えるだけでゲームから読み込める。
ツィート数が2桁以上あったらもう少し詳しく書こうかな(チラ