はかせのラボ

私の頭の中を書いていく雑記ブログです

Unity ScriptableObject①

あいさつ

どうも、はかせです。
今回はUnityのScriptableObjectについてです。

ScriptableObjectとは?

すごいざっくりと言うと
「クラスのインスタンスをPrefabとして保存使用する機能」です。
クラスインスタンスがprefabとして保存されているので
スクリプトで明示的に弄らない限り中身が変わったりすることはありません。
(シーンロードとかで変な初期化をされない)

使い方

こんな感じです。

[CreateAssetMenu(fileName = "Test",menuName = "Test")]
public class TestScriptableObject : ScriptableObject
{
    private void OnEnable()
    {
        
    }
    private void OnDisable()
    {
        
    }
    private void OnDestroy()
    {
        
    }
}

ScriptableObjectを継承したクラスのインスタンスがScriptableObjectとして利用できます。
通常のMonobehaviour付きのクラスと比べてUnityから受けるメッセージが制限されています。
(Updateとかない)

では、このクラスインスタンスをprefabにしてみます。
やり方は簡単です。
右クリック→Createのいつもの流れで選択していき先頭のTestをクリックするだけ。
f:id:hakase0274:20190413225115p:plain
そうするとこんな感じになります。
f:id:hakase0274:20190413225249p:plain
こうやってできるのは

[CreateAssetMenu(fileName = "Test",menuName = "Test")]

これが宣言されているからです。
これはCreateメニューの中にTestという項目を作ります。
そしてそのTestをクリックしたらTestという名前のScriptableObjectを生成します。

ちなみにこのCreateAssetMenuという属性はUnityのエディタ拡張とか触ると
ちょこちょこ使ったりしますが、その話はまたいずれということで。

あとがき

今回はScriptableObjectの紹介第一弾でした。
次回はこのScriptableObjectを実際私がどんな感じでつかってるのか
あげたいと思います。

それでは今回はこの辺でノシ