Unity3D:ScriptableObject数据配置脚本化对象

大腿Plus Unity3D项目开发评论6452阅读模式

1,什么是ScriptableObject

ScriptableObject 是 Unity 提供的一个数据配置存储基类,它是一个可以用来保存大量数据的数据容器,我们可以将它保存为自定义的数据资源文件。文章源自大腿Plus-https://www.zhaoshijun.com/archives/1910

ScriptableObject 是一个类似 MonoBehaviour 的基类,继承自 UnityEngine.Object。要想使用它,需要我们写个脚本去继承 ScriptableObject。需要注意的是,继承自 SctiptableObject 的脚本无法挂载到游戏物体上,毕竟它不是继承自 MonoBehaviour。文章源自大腿Plus-https://www.zhaoshijun.com/archives/1910

ScriptableObject 类的实例会被保存成资源文件(.asset文件),和预制体,材质球,音频文件等类似,都是一种资源文件,存放在 Assets 文件夹下,创建出来的实例也是唯一存在的。文章源自大腿Plus-https://www.zhaoshijun.com/archives/1910

2,如何创建 ScriptableObject文章源自大腿Plus-https://www.zhaoshijun.com/archives/1910

首先,创建一个脚本继承自 ScriptableObject 类。文章源自大腿Plus-https://www.zhaoshijun.com/archives/1910

为类添加 CreateAssetMenu 特性,在编辑器的菜单中创建资源文件,如下


其中fileName是创建资源文件的默认名称,menuName是菜单中的路径文章源自大腿Plus-https://www.zhaoshijun.com/archives/1910

3,如何读取ScriptableObject文章源自大腿Plus-https://www.zhaoshijun.com/archives/1910

第一种方法是直接拖拽到Inspector 面板中,通过 Inspector 面板中的 public 变量进行关联。文章源自大腿Plus-https://www.zhaoshijun.com/archives/1910

第二种方法是可以用 Resources,AddressBundle,Addressables 等方式加载数据资源文件。文章源自大腿Plus-https://www.zhaoshijun.com/archives/1910

4,如何写入数据到ScriptableObject文章源自大腿Plus-https://www.zhaoshijun.com/archives/1910

要想写入数据只能在编辑器下,通过 Inspector 面板直接写入数据。如果想更便捷的使用工具修改,需要先读取数据,然后修改数据后,通过EditorUtility.SetDirty(ScriptableObject对象);进行保存,这个只能是在编辑器下使用,保存完成后最好用AssetDatabase.Refresh();刷新一下,才能看到变化

5,ScriptableObject的生命周期


以上是对ScriptableObject的详细介绍,这个数据配置对象,对于游戏开发有优点也有缺点。优点是读取速度快,数据读写方便,对于通用数据可以有效避免内存的浪费。缺点是只能在编辑器下进行数据的更改,一旦打包就不能再去修改。总之优点是大于缺点的。
我的微信
微信扫一扫
weinxin
shijun_z
我的QQ
QQ扫一扫
weinxin
846207670
 最后更新:2023-10-26
大腿Plus
  • 本文由 大腿Plus 发表于 2023年10月25日 14:54:15
  • 转载请务必保留本文链接:https://www.zhaoshijun.com/archives/1910

发表评论