ikoan unity 開発メモ

Unityに関するアレコレを日々つづっていこうと思います

csvデータをScriptableObjectに変換する

環境

Unity2018.2.14f1

概要

ゲームのマスターデータを作成する際、DBサーバーから通信して持ってくるのも一つの手段ではありますが、Unity5系から導入されたScriptableObjectを使用するのも、個人で開発する際には重宝するかな、と思っています。
今回はScriptableObjectを導入する流れを紹介したいと思います。

利点

・外部サーバーなどを使用しないので、ローカルで完結できる。そのため他のサービスなどを準備する手間がない。
・UnityEditor上でパラメータを編集できて、すぐに反映・テストしやすい。
・アプリ内に埋め込むこともできるし、いざとなればアセットバンドル化して、外部に出すことも可能。
などが考えられるでしょうか。

準備

まずは下記のExampleのように、ScriptableObjectを準備します。

Scriptable Object Example

例にあるように、Serializbleにしたstructなども使用することができます。
[CreateAssetMenu()]をつけることで、UnityEditorのProjectビューを右クリックした時に表示されるメニューからも、ScriptableObjectを作ることができます。
ただ、今回はcsvを読み込んで、ScriptableObjectを生成して見ましょう。

作成して保存する

csvを読み込むところはSystem.File.IOのFile使うと簡単ですが、自分のやりやすいやり方でいいと思います。
CreateInstance<"ScriptableObject">(); でScriptableObjectインスタンスを作成します。
作成したオブジェクトにcsvファイルから読み込んだデータをセットし、AssetDatabaseに保存することで完成です。
簡単ですね!


Create ScriptableObject Example