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();
}
}