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