入门 Unity ScriptableObject

611 阅读1分钟

入门 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功能按钮生成资源配置文件

image-20230512103712844

image-20230512103750151

此时已经在 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 的面板中就可以像往常一样配置属性了。

image-20230512104452654

怎么使用 ScriptableObject

单例使用

一般使用 ScriptableObject 方式是为了共享属性配置,所以做成单例会十分的方便。

public static DataManager Instance;

private void Awake()
{

    if (Instance == null)
    {
        Instance = this;
    }
}

通过数据绑定来使用

public class Test : MonoBehaviour
{
    public DataManager dataManager;
}

image-20230512112847700