【Unity/笔记】认识ScriptableObject

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

ScriptableObject

  • ScriptableObject
    一个继承自UnityEngine.Object且字段能够被序列化的类
    也就是说需要用到命名空间UnityEngine
  • VS MonoBehaviour
    我们知道一般继承自MonoBehaviour的脚本组件可序列化的字段都能在Inspector中显示出来,ScriptableObject也可以,当相比之下它不必挂载在某个游戏对象上。
    关于MonoBehaviour有以下几点:

    1. 运行时修改的数据不会在退出运行时保存下来。
    2. 接收Unity的回调函数调用
    3. 运行时需要挂载在游戏对象上
    4. 它的实例被存在scene和prefabs中。
    5. 支持序列化,能在Inspector面板中显示数据。

    关于ScriptableObject:

    1. 运行时修改的数据能够在退出运行时保存下来。
    2. 不接收大多数回调调用(只有Awake、OnEnable、OnDestroy、OnDisable)
    3. 运行时不必依附于指定游戏对象
    4. 每个不同的实例能被存储在各自的文件中。
    5. 同上
  • 基本使用方式

    1. 创建一个派生自ScriptableObject的类叫做MyScriptableObjClass
    2. 添加特性[CreateAssetMenu(menuName =”CreatAM”)]
    3. 右键Create 点击CreatAM,目录下会产生一个新的asset文件,可以命名为MyScriptableObj,该文件存储了MyScriptableObjClass的实例以及其中的数值。
    4. 在其它脚本中使用public MyScriptableObjClass scriptableObj;以使用类型引用的方式将之前的实例添加上去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值