当前位置: 首页 > news >正文

Unity (编辑器)数据持久化 之 ScriptableObject初识与创建

1.什么是ScriptableObject

ScriptableObject - Unity 手册

如题,一个可以在Unity编辑器中方便编辑数据的工具

一个脚本继承该类,并且序列化或者有公共变量,即可在Inspector窗口看到它们

其特点:

Q:是否可以将 ScriptableObject的数据保存到本地?

A:可以,可以通过Json的序列化与反序列化保存 ScriptableObject的数据

 2.创建一个ScriptableObject文件

2.1 使用CreateAssetMenu(建议)

先继承ScriptableObject!!!!!!!!!!!!!!!!!!!!!!!!

使用CreateAssetMenu创建一个ScriptableObjec配置文件

[CreateAssetMenu(fileName ="文件名" ,menuName ="菜单名",order =0)]

 

示例:

当我的脚本中写了如下变量之后:

  public int a;public string b;[SerializeField]private GameObject c;

该文件就会出现对应的变量

 

总览:

[CreateAssetMenu(fileName ="文件名" ,menuName ="菜单名",order =0)]
public class LearnScripttableObject : ScriptableObject
{public int a;public string b;[SerializeField]private GameObject c;
}

 2.2 使用MenuItem

示例: 

public class TextMenuItem : MonoBehaviour
{//使用该特性在unity编辑器菜单栏中显示一个手势[MenuItem("菜单栏/手势")]public static void NewFunc(){ }
}

之后使用ScriptableObject的静态方法进行创建数据并保存到本地

public class TextMenuItem : MonoBehaviour
{//使用该特性在unity编辑器菜单栏中显示一个手势[MenuItem("菜单栏/手势")]public static void NewFunc(){//创建实例LearnScripttableObject  learnScripttable = ScriptableObject.CreateInstance<LearnScripttableObject>();//创建数据源文件       AssetDatabase.CreateAsset(learnScripttable,"Assets/Resources/sob数据文件.asset");//保存文件AssetDatabase.SaveAssets();//刷新AssetDatabase.Refresh();}
}

点击手势就会执行特性下的函数(NewFunc) 

-------------------------------------------------------------------------------------------------------------------------------

拆解: 

 第一行行代码,是abc数据的来源

 LearnScripttableObject  learnScripttable = ScriptableObject.CreateInstance<LearnScripttableObject>();

第二三行代码是在指定路径下保存该文件为指定名字 

 //创建数据源文件       AssetDatabase.CreateAsset(learnScripttable,"Assets/Resources/sob数据文件.asset");//保存文件AssetDatabase.SaveAssets();


 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Adobe Illustrator vs Photoshop:设计界的“相声搭档”
  • 【类模板】模板参数的推断
  • [激光原理与应用-126]:傅里叶变化与频域分析
  • Redis的内存淘汰策略-volatile-ttl
  • 【Python机器学习】词向量推理——语义查询与类比
  • HarmonyOS实战开发:NAPI接口规范开发
  • 华为 HCIP-Datacom H12-821 题库 (3)
  • vscode Git代码版本回退
  • 【生日视频制作】宝马提车交车仪式感广告展示牌AE模板修改文字软件生成器教程特效素材【AE模板】
  • javacv-ffmpeg ProcessBuilder批量旋转图片
  • Elasticsearch Suggesters API详解与联想词自动补全应用
  • Oracle rac模式下undo表空间爆满的解决
  • 公钥密码选择题
  • Cesium 台湾省白膜数据渲染
  • Java语言程序设计基础篇_编程练习题**17.17(BitOutputStream)
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 0基础学习移动端适配
  • DOM的那些事
  • es6要点
  • FastReport在线报表设计器工作原理
  • HTTP那些事
  • IDEA常用插件整理
  • PHP的类修饰符与访问修饰符
  • ReactNative开发常用的三方模块
  • Shell编程
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Terraform入门 - 3. 变更基础设施
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • Tornado学习笔记(1)
  • ViewService——一种保证客户端与服务端同步的方法
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 大数据与云计算学习:数据分析(二)
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 前端知识点整理(待续)
  • 使用agvtool更改app version/build
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • ​ssh免密码登录设置及问题总结
  • #pragma multi_compile #pragma shader_feature
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (1)bark-ml
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (2)nginx 安装、启停
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (C++哈希表01)
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (排序详解之 堆排序)
  • (十三)Flask之特殊装饰器详解
  • (数据结构)顺序表的定义
  • (算法二)滑动窗口
  • (未解决)macOS matplotlib 中文是方框