U4S2——数据配置存储基类 ScriptableObject
U4S2——数据配置存储基类 ScriptableObject
ScriptableObject
ScriptableObject是Unity提供的一个数据配置存储基类
它是一个可以用来保存大量数据的数据容器,就像是可以自定义的数据资源文件
它是一个类似MonoBehavior的基类,需要我们继承它来进行使用
它的主要作用是:
- 数据复用(多个对象用同一个数据)
- 配置文件(配置游戏中的数据)
- 编辑模式下的数据持久化
主要讲解内容
- ScriptableObject是什么
Unity提供的一个数据存储基类 - ScriptableObject的好处
文件配置、数据复用、更好的处理数据带来的多态行为
本系列学习内容:
-
ScriptableObject 数据文件的创建
-
ScriptableObject 数据文件的使用
-
ScriptableObject 非持久数据
-
ScriptableObject 让其真正意义上的持久
-
ScriptableObject 的应用
- 配置数据
- 复用数据
- 数据带来的多态行为
- 单例模式化的获取数据
数据复用
比如一个子弹对象,以前我们通过面向对象的思想去做的话,
会写一个继承 MonoBehaviour
的脚本
相关的属性都会在这里声明,然后挂载到子弹模型预设体上
这样每次实例化一个子弹,如果数据不变,
那么对内存来说,是有一定浪费的
因为每一个子弹预设体上都有该脚本,那么所有的属性都会分配一次内存
通过使用 ScriptableObject
可以有效避免内存的浪费
配置文件
以前我们要通过配置文件配置游戏相关的数据,
比如玩家数据、怪物数据等等
是通过数据持久化相关知识来完成的,
我们一般会通过 xml、json、excel 等方式来配置游戏数据
相对来说都是在 Unity 外部通过其它格式的文件对数据进行配置
而通过 ScriptableObject
我们可以直接在 Unity 内部
在 Inspector
窗口中就可以进行数据的配置
编辑模式下的数据持久化
当我们在编辑模式下修改了继承 ScriptableObject
对象的数据文件内容时
这些修改将被记录下来,因此在编辑模式下 ScriptableObject
是具有数据持久化特性的
但是需要注意的是,在发布运行时后的 ScriptableObject
并不具备持久化特性(即发布运行时后,修改数据对象,并不会保存在本地)
ScriptableObject的好处
- 我们可以直接在 Inspector 窗口编辑配置数据,且在编辑模式下具备数据持久化特性,可以利用它来做配置文件
- 处理重复数据,减少数据拷贝时造成的内存占用,可以利用它来做公共数据
- 可以更方便的处理数据带来的多态行为
何时使用ScriptableObject
-
主要应用点
- 配置文件
- 内置编辑器功能生成的数据文件(技能配置,关卡配置等等)
-
次要应用点
只用不改的公共数据
-
注意!
不建议使用
ScriptableObject
做数据持久化
其实目前我们想要制作的所有功能,就算不使用 ScriptableObject
也能够通过别的方式制作出来
所以不要“为了用而用”一定要根据自己的实际情况来选择使用,记住它的优点(配置方便、节约内存等等)
当遇到可以利用其优点更好的完成需求时,再使用它