【Unity 笔记】ScriptableObject 数据存储

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

一、什么是ScriptableObject?

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

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

二、ScriptableObject中的成员与方法

2.1 静态方法

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

2.2 讯息

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

2.3 继承成员与方法

【Unity 笔记】ScriptableObject 数据存储_第1张图片
如图所示,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视图内容即可。
    【Unity 笔记】ScriptableObject 数据存储_第2张图片

你可能感兴趣的:(Unity,游戏开发笔记,unity)