当前位置:   article > 正文

【Unity 笔记】ScriptableObject 数据存储_unity scriptableobject 克隆

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;  //技能伤害
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 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;
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 根据[MenuItem("Tools/Skill/Create SkillInfo")]行,从Unity菜单栏上,依循 Tools -> Skill -> Create SkillInfo 创建实例对象。
  • 创建实例对象路径,遵循实例中由我们提供的Assets/Skills/skill.asset路径
  • 代码行Selection.activeObject = info,为我们自动选中实例化对象在Assets中的具体位置
  • 点击实例化对象,查看Inspector视图内容即可。
    在这里插入图片描述
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/112485
推荐阅读
相关标签
  

闽ICP备14008679号