トーフメモ

主にゲーム制作

【Unity】ScriptableObjectを使ってみた

ScriptableObjectの作り方について備忘録。

まずScriptableObjectを継承したクラスを作ります。
[CreateAssetMenu]を付与してエディタ上でScriptableObjectを作成できるようにします。

BallData.cs

using UnityEngine;

[CreateAssetMenu(menuName ="ScriptableObject/Ball")]
public class BallData : ScriptableObject {
    public int speed;
    public int maxhp;
    public int power;
}

Project上右クリックで先ほど定義したScriptableObjectを作成します。
f:id:tofgame:20190415172239p:plain

作成したScriptableObjectはInspecter上で編集できます。
f:id:tofgame:20190415172609p:plain

作ったScriptableObjectを実際に使ってみます。
BallDataをpublicで宣言して先ほど作ったScriptableObjectをアタッチします。(privateでSerializeFieldにするのでもいいです)

Ball.cs

using UnityEngine;

public class Ball : MonoBehaviour {
    public Rigidbody rigidbody;
    public BallData ballData;

    private void Start () {
        rigidbody.velocity += Vector3.forward * ballData.speed;
    }
}

f:id:tofgame:20190415173519p:plain

これで動けばもんだいなしです。