ScriptableObjects 介紹

ScriptableObjects 是未繫結到場景或遊戲物件的序列化物件,如 MonoBehaviours 所示。換句話說,它們是繫結到專案內資產檔案的資料和方法。這些 ScriptableObject 資產可以傳遞給 MonoBehaviours 或其他 ScriptableObjects,可以訪問它們的公共方法。

由於它們作為序列化資產的性質,它們可以構建出色的管理器類和資料來源。

建立 ScriptableObject 資產

下面是一個簡單的 ScriptableObject 實現。

using UnityEngine;

[CreateAssetMenu(menuName = "StackOverflow/Examples/MyScriptableObject")]
public class MyScriptableObject : ScriptableObject
{
    [SerializeField]
    int mySerializedNumber;

    int helloWorldCount = 0;

    public void HelloWorld()
    {
        helloWorldCount++;
        Debug.LogFormat("Hello! My number is {0}.", mySerializedNumber);
        Debug.LogFormat("I have been called {0} times.", helloWorldCount);
    }
}

通過將 CreateAssetMenu 屬性新增到類中,Unity 將在 Assets / Create 子選單中列出它。在這種情況下,它位於 Assets / Create / StackOverflow / Examples 下

建立後,可以通過 Inspector 將 ScriptableObject 例項傳遞給其他指令碼和 ScriptableObjects。

using UnityEngine;

public class SampleScript : MonoBehaviour {

    [SerializeField]
    MyScriptableObject myScriptableObject;

    void OnEnable()
    {
        myScriptableObject.HelloWorld();
    }
}