4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ScriptableObjectの使い方使い道

Last updated at Posted at 2021-07-08

ScriptableObjectとは

  • 同じデータを何度もインスタンス化しないように同じインスタンスを参照する。
  • インスペクター上でキャラクターとかのステータス変更を容易にする。
  • データの構造を統一して、データの枠を作れる。

正直こんな言い方していいのかわからないけど、この3つの使い方、もしくはこれらを複合して使える。

本来の使い方はこんな感じ(なのかな?)
https://ekulabo.com/about-scriptable-object
ドラクエにスライムが9匹ぐらい出る戦闘がある。
このスライム1体ずつをインスタンス化するとその分メモリを食うので、参照先を同じにすることで食うメモリを減らせる。
これが9体だからいいけど、1000体とかに増えると同じところを参照したほうがいいよね。

ScriptableObjectの利点

ScriptableObjectにGameObjectやPrefabを入れれること。
https://qiita.com/toRisouP/items/1d0c8e3d8040cbb413fc
これでいちいちprefabから呼び出す必要がない。というか扱いやすい。
それでいて、同じオブジェクトでもステータスをインスペクター上変えられる。
例えば武器のデータを作るためにこんなScriptableObjectを作ってみる。

WeaponData.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(menuName = "MyScriptable/Create WeaponData")]  
//project上でWeaponDataを新規作成できるようにする
public class WeaponData : ScriptableObject {
    public string weaponName;//武器の名前
    public bool unlock;//武器の解放条件
    public GameObject gameObject;//武器本体
    public int level;//武器の強化情報
    public int weaponCost;//武器強化にかかる値段に影響する1~4の4段階
    public int WeaponUpgrage(int level) { //実装中の機能
        int value = level * weaponCost * 100;
        return (value);
    }
}

image.png
するとこんな感じで、projectからScriptableObjectを作成できる。
image.png
新規作成するとこんな感じ。立方体に{}がついてるのがScriptableObjectの特徴
新規作成したオブジェクトはインスペクター上でいろいろ設定できる。
設定したデータが武器1つのデータとなる。
image.png
なんかこんな感じに、たくさん作ったら武器データをたくさん作れる。

ScriptableObjectのデメリット

データのサイズがとんでもなく大きくなるとエクセルとかで扱った方が便利になる。
image.png
たくさんの武器の攻撃力をソートするとか、カテゴリごとに処理するなど。
大量のデータ処理に関してはScriptableObjectは使いづらいのでは?

結論

あれ、これ普通のScriptでもいいんじゃない?って使い方をしている。
使いどころを間違えている気がしてならない、特に武器データに関しては。
ただ、武器データの構造の統一という面ではWeaponDataを作る意味がありそうだった。

参考文献
公式リファレンス
https://docs.unity3d.com/ja/540/Manual/class-ScriptableObject.html
わかりやすい入門記事
https://qiita.com/4_mio_11/items/a7d8967b853cef4385cd
公式の3つの使い方
https://unity.com/ja/how-to/architect-game-code-scriptable-objects

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?