UnityUnityの使い方

【Unityの使い方】ScriptableObjectについて

Unity

ScriptableObjectとは

ScriptableObjectは、データの収納庫として機能し、それを使ってゲーム内で何度でも利用できるんです。ゲームの外にデータを置いておくための便利な箱みたいなものです。

これによって、データを何度も書かなくても済むし、ゲーム開発がスムーズに進めることができます。

例えば、ゲームに出てくるアイテムの情報をここに入れておくと、同じアイテムをどこでも何度でも使い回すことができます。これがScriptableObjectの特徴です!

ScriptableObjectを作る

ScriptableObjectは、Unityのエディタ上でとっても簡単に作れます。

まずはC#スクリプトを作成してScriptableObjectで使いたい情報を入力します。

例えばアイテムの情報やキャラクターのステータスなどを入力します。

// ItemData.cs
using UnityEngine;

[CreateAssetMenu(fileName = "New Item", menuName = "Item Data")]
public class ItemData : ScriptableObject
{
    public string itemName;
    public int itemID;
    public float itemWeight;
    // 他にも必要なアイテムの情報を追加できます
}

スクリプトを保存したらAssetsフォルダ(プロジェクト内のファイルを入れておく場所)で右クリックして、「Create」→「ScriptableObject」(上のコードの場合Item Data)を選びましょう。

そうすると、新しいScriptableObjectができあがります。

データを入力する

できたScriptableObjectをダブルクリックして開くと、エディタが現れます。

ここに、例えばアイテムの情報や画像、キャラクターのステータスなど、使いたいデータを詰め込んでいきます。

データの形式は、文字や数字、色々ありますが、分かりやすい形で書くといいですね。

ScriptableObjectを使う

作ったScriptableObjectを使うには、スクリプトで呼び出す必要があります。

例えば、アイテムの情報が詰まったScriptableObjectを使う場合、アイテムを管理するスクリプトで、そのScriptableObjectを指定するといいです。

そうすることで、アイテム情報を取り出して使えるようになります。

// ItemGenerator.cs
using UnityEngine;

public class ItemGenerator : MonoBehaviour
{
    public ItemData itemData;

    void Start()
    {
        GenerateItem();
    }

    void GenerateItem()
    {
        Debug.Log("生成されたアイテム: " + itemData.itemName);
        Debug.Log("アイテムID: " + itemData.itemID);
        Debug.Log("アイテム重さ: " + itemData.itemWeight);
        // 他にもアイテム生成に関する処理を追加できます
    }
}

これで、同じScriptableObjectを何度でも使い回すことができます。

別の場所や別のシーンで同じデータを使いたいときも、このScriptableObjectを呼び出すだけでOK。

データの変更も、ScriptableObjectの中身を変えるだけで、使っているところ全部に反映されます。