Unityで値を触りやすいデータを作ろう -作成編-
こんにちは。インターン生の東谷 太喜です。
本日はScriptableObjectの実際の作成方法について書いていこうと思います。
1.C#Scriptの作成
Unity内の作業を行うフォルダ内で右クリック、Create→C#Scriptを選択。名前を好きに変更しましょう。
私はStage用のデータを作成しますので、「StageData」にします。
Asset直下以外、スクリプト用のフォルダなどに置くことをお勧めします。
2.ScriptableObjectに編集
早速プログラムを書いていくので、1.で作成したScriptを開きます。
継承先を 「Monobehaviour」から
ScriptableObject
に変更します。
Classの前の行に
[CreateAssetMenu(menuName = “メニュー名”)]
を書きます。
私はメニュー名の中身を「Data/StageData」と書きました。
このコードは、Unity内のアセットのメニューに表示させるためのものです。
3.データをアセットフォルダに作成
Unityのエディタに戻り、データを作成したいフォルダ内で右クリック、Create→”メニュー名”で作成でします。
“メニュー名”は2.で作成した ( menuName = “メニュー名” ) の””内の文字列に沿ったものが表記されます。
文字列に「/」を入れた場合折り畳みになりますので、カテゴリ毎に分けることもできます。
私は文字列に「Data/StageData」と書きましたので、折り畳まれて表示されています。
4.作りたいデータの値を書く
現状はまだ何も値を書いていませんので、何もない状態です。
値を作成する際に一つ問題点があります。
private や protectedなど変数をカプセル化して作成した場合、表示されないということです。
public で作成した場合はインスペクター内に表示されます。
そこで、変数の後ろに [SerializeField] を書き足します。
変数の後ろに付けることで、変数をシリアライズ化の対象にすることができます。
対象にすることで、private や protected であってもインスペクター上に編集可能なフィールドで表示されます。
なので作る際は 『 [SerializeField] private int score = 100; 』のように書くことをお勧めします。
最後に他のクラスで取得できるようにGetterを作成すれば完成です。
今回はScriptableObjectの作成について書いていきました。
次回はScriptableObjectのEditor拡張について書いていきます。
インターンシップへの申し込み・お問い合わせ先
