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 scriptab

本文介绍了Unity中的ScriptableObject,它是一个继承自UnityEngine.Object且字段可序列化的类,不同于MonoBehaviour,ScriptableObject不必挂载在游戏对象上。ScriptableObject在运行时修改的数据能够保存,不接收大多数Unity回调,且可以独立存储在文件中。文章讨论了其创建、使用场景及生命周期,并强调了在编辑器模式下避免使用CreateInstance创建实例以防止内存泄漏。
最低0.47元/天 解锁文章
20万+

被折叠的 条评论
为什么被折叠?



