ScriptableObject
- ScriptableObject
一个继承自UnityEngine.Object且字段能够被序列化的类
也就是说需要用到命名空间UnityEngine VS MonoBehaviour
我们知道一般继承自MonoBehaviour的脚本组件可序列化的字段都能在Inspector中显示出来,ScriptableObject也可以,当相比之下它不必挂载在某个游戏对象上。
关于MonoBehaviour有以下几点:- 运行时修改的数据不会在退出运行时保存下来。
- 接收Unity的回调函数调用
- 运行时需要挂载在游戏对象上
- 它的实例被存在scene和prefabs中。
- 支持序列化,能在Inspector面板中显示数据。
关于ScriptableObject:
- 运行时修改的数据能够在退出运行时保存下来。
- 不接收大多数回调调用(只有Awake、OnEnable、OnDestroy、OnDisable)
- 运行时不必依附于指定游戏对象
- 每个不同的实例能被存储在各自的文件中。
- 同上
基本使用方式
- 创建一个派生自ScriptableObject的类叫做MyScriptableObjClass
- 添加特性[CreateAssetMenu(menuName =”CreatAM”)]
- 右键Create 点击CreatAM,目录下会产生一个新的asset文件,可以命名为MyScriptableObj,该文件存储了MyScriptableObjClass的实例以及其中的数值。
- 在其它脚本中使用public MyScriptableObjClass scriptableObj;以使用类型引用的方式将之前的实例添加上去。