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拡張について書いていきます。

インターンシップへの申し込み・お問い合わせ先

インターンシップへの申し込み・お問い合わせ先
メールでのお問い合わせは、下記フォームに入力して送信してください。
ご氏名 (例)山田 太郎
メールアドレス 半角英数字:ご入力間違いのないようにご注意ください
メールアドレス(確認用) 半角英数字:ご入力間違いのないようにご注意ください
電話番号 (例)0354339211 ※ハイフン抜きで入力してください
題名
お問合わせ内容

アーカイブ

カテゴリー