【Unity】スクリプタブルオブジェクト

スクリプタブルオブジェクトとは

Unityのスクリプタブルオブジェクトは、Unityのエディター上で設定可能であり、ランタイム中に読み込み、変更が可能な、カスタムのオブジェクトです。これは、アセットやシーン内のオブジェクトを参照して、そのオブジェクトを変更するために使用できます。

スクリプタブルオブジェクトは、スクリプトで定義され、ScriptableObjectを継承して作成されます。このオブジェクトは、シリアライズされたファイルとして保存され、アプリケーションの実行時に読み込まれます。これにより、Unityのエディター上でオブジェクトを作成し、カスタムのデータを保持することができます。

スクリプタブルオブジェクトは、アセットのようにUnityのプロジェクト内に保存され、シーン内に配置されたゲームオブジェクトにアタッチすることができます。また、スクリプタブルオブジェクトは、異なるシーン間で共有されるため、アプリケーション全体でのデータの共有に役立ちます。

例えば、敵の属性やプレイヤーの能力などのカスタムのデータを保持するスクリプタブルオブジェクトを作成し、スクリプトで参照することができます。また、スクリプタブルオブジェクトは、エディター上でのデバッグや、編集の容易さなどの利点があります。

サンプル

以下は、Unityのスクリプタブルオブジェクトのサンプルです。ここでは、プレイヤーのステータスを管理するスクリプタブルオブジェクトを作成します。

まず、スクリプタブルオブジェクトを作成するために、以下のようなスクリプトを作成します。

using UnityEngine;

[CreateAssetMenu(fileName = "PlayerStatus", menuName = "Custom/PlayerStatus")]
public class PlayerStatus : ScriptableObject
{
    public int maxHealth = 100;
    public int currentHealth = 100;
    public int attackPower = 10;
    public int defensePower = 5;
}

このスクリプトでは、PlayerStatusという名前のスクリプタブルオブジェクトを作成し、最大HP、現在のHP、攻撃力、防御力といったプレイヤーのステータスを管理します。

次に、作成したスクリプタブルオブジェクトをシーン内に配置するために、以下のようなスクリプトを作成します。

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    public PlayerStatus playerStatus;

    void Start()
    {
        Debug.Log("Max health: " + playerStatus.maxHealth);
        Debug.Log("Attack power: " + playerStatus.attackPower);
    }
}

このスクリプトでは、PlayerControllerという名前のスクリプトを作成し、PlayerStatusというスクリプタブルオブジェクトを参照します。Startメソッド内で、最大HPと攻撃力をログに出力しています。

最後に、シーン内にプレイヤーを配置し、PlayerControllerコンポーネントをアタッチします。PlayerControllerコンポーネントのInspector上で、作成したPlayerStatusスクリプタブルオブジェクトを指定します。

これで、プレイヤーのステータスを管理するスクリプタブルオブジェクトを作成し、参照することができます。ni

ScriptableObject,Unity

Posted by hidepon