入门 Unity ScriptableObject
ScriptableObject 是什么?
ScriptObject 是 Unity 提供的数据配置存储基类,可以保存大量数据的数据容器。
ScriptableObject 的作用
数据复用
多个游戏对象共用一份数据,可以有效的避免内存的浪费。
配置文件
配置游戏的数据,可以直接通过 Unity 的属性窗口进行配置。
编辑状态的数据持久化
怎么创建 ScriptableObject
新建一个类继承 ScriptableObject
// 数据管理类
public class DataManager : ScriptableObject
{
}
新增一个 Menu 生成数据资产
// 新增一个 [Create DataManager] 菜单按钮,生成一个名字叫做 [DataManager] 的资源
[CreateAssetMenu(fileName = "DataManager", menuName = "Create DataManager")]
public class DataManager : ScriptableObject {}
点击 Create DataManager
功能按钮生成资源配置文件
此时已经在 DataManager.cs
的同级目录生成一个 DataManager.asset
的资源配置文件。
此时新增的菜单代码可以注释或者删除了
// [CreateAssetMenu(fileName = "DataManager", menuName = "Create DataManager")]
后面我们就可以像往常在 MonoBehaviour
中新增常用属性一样使用了。
public class DataManager : ScriptableObject
{
// 主角名称
public string nikeName;
// 主角的年龄
public int age;
// 主角奔跑的速度
public float speed;
// 主角的预制体
public GameObject prefab;
// 支持控制主角跳跃的按键
public KeyCode jumpKeyCode;
}
此时我们在 DataManager.asset
的面板中就可以像往常一样配置属性了。
怎么使用 ScriptableObject
单例使用
一般使用 ScriptableObject 方式是为了共享属性配置,所以做成单例会十分的方便。
public static DataManager Instance;
private void Awake()
{
if (Instance == null)
{
Instance = this;
}
}
通过数据绑定来使用
public class Test : MonoBehaviour
{
public DataManager dataManager;
}