【Unity 笔记】ScriptableObject 数据存储

开发平台:Unity 2019版本以上
编程平台:Visual Studio 2017版本以上
编程语言:C#

一、什么是ScriptableObject?

描述:只用于存储数据Assets的静态函数,无需附加到游戏对象上。

例如:角色移动参数、攻击参数、道具参数等

二、ScriptableObject中的成员与方法

2.1 静态方法

  • CreateInstance():实例化(创建)一个与类名相同的对象
    实体化图标

2.2 讯息

  • OnDestroy():销毁对象
  • OnDisable():禁用对象
  • OnEnable():激活对象

2.3 继承成员与方法

在这里插入图片描述
如图所示,ScriptableObject继承于Object对象,其可使用来自于父类的Protected/Public级别成员方法。


变量

  • hideFlags:是否隐藏对象,是否保存在场景中、是否允许被用户修改?
  • name:对象名称

方法

  • GetInstanceID():获取实例化对象的ID编号
    实例化对象的ID全局唯一,参考用户UID唯一
  • ToString():转换为字符串string数据类型

静态方法

  • Destroy():销毁对象
  • DestroyImmediate():立即销毁对象
    建议使用Destroy(),其包含对DestroyImmediate()的立即销毁功能和自身额外的延时销毁功能
  • DontDestroyOnLoad():加载新场景过程中,该目标对象不会被自动销毁
  • FindObjectOfType():返回Type类型的第一个活动加载对象
  • FindObjectsOfType():返回Type类型的所有对象列表
  • Instantiate():克隆对象,并返回这个对象的克隆对象

运算符

  • bool:返回true/false,这里用于判断对象是否存在
  • operator !=:比较两个对象是否为不同的对象
  • operator ==:比较两个对象是否为同类的对象

三、如何使用ScriptableObject

  • 创建脚本命名:SkillInfo,并继承于ScriptableObject
  • 添加一下字段,如下所示:
using UnityEngine;

namespace Skill
{
	//技能信息
    public class SkillInfo : ScriptableObject
    {
        public string name;  //技能名称
        public AnimationClip animation;  //技能释放动画
        public Sprite icon;  //技能图标
        public string description;  //技能描述
        public float dmageValue;  //技能伤害
    }
}
  • Assets下新建文件夹,命名Editor,并创建脚本SkillUtility,内容如下
using UnityEditor;
using UnityEngine;

namespace Skill
{
    // 生成技能信息文件
    public class SkillUtility
    {
        [MenuItem("Tools/Skill/Create SkillInfo")]
        static void Create()
        {
            //生成 SkillInfo实例
            SkillInfo info = ScriptableObject.CreateInstance<SkillInfo>();
            //生成文件
            AssetDatabase.CreateAsset(info, "Assets/Skills/skill.asset");
            //自动选中
            Selection.activeObject = info;
        }
    }
}
  • 根据[MenuItem("Tools/Skill/Create SkillInfo")]行,从Unity菜单栏上,依循 Tools -> Skill -> Create SkillInfo 创建实例对象。
  • 创建实例对象路径,遵循实例中由我们提供的Assets/Skills/skill.asset路径
  • 代码行Selection.activeObject = info,为我们自动选中实例化对象在Assets中的具体位置
  • 点击实例化对象,查看Inspector视图内容即可。
    在这里插入图片描述
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值