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

devtools/2024/10/21 9:59:05/

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();


 


http://www.ppmy.cn/devtools/105296.html

相关文章

SQL 数据查询

文章目录 3.4.1 单表查询定义特点单表无条件查询单表带条件查询对查询结果进行排序限制查询结果数量 3.4.2 分组查询定义特点&#xff1a;聚集函数GROUP BY短语HAVING子句分组查询小结 3.4.3 连接查询定义特点&#xff1a;等值连接与非等值连接查询自然连接&#xff08;内连接&…

Apache DolphinScheduler大规模任务调度系统对大数据实时Flink任务支持

转载自神龙大侠 我是用olphinScheduler 3.2.1版本做源代码编译部署&#xff08;部署方式参考我的另外一篇文档《源代码编译&#xff0c;Apache DolphinScheduler前后端分离部署解决方案》&#xff09; 二进制文件部署本文也适用&#xff0c;只需要修改相对应的配置即可。 资…

怎么摆脱非自然链接?

什么是非自然链接&#xff1f; 非自然链接是人为创建的链接&#xff0c;用于操纵网站在搜索引擎中的排名。非自然链接违反了Google 的准则&#xff0c;网站可能会因此受到惩罚。 它们不是由网站所有者编辑放置或担保的。示例包括带有过度优化锚文本的链接、通过 PR 的广告、嵌…

Leetcode 146. LRU 缓存(Medium)

请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c;否则返回 -…

基于yolov5的猪只识别计数检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv5的猪只识别计数检测系统是一种创新的农业应用解决方案&#xff0c;它结合了深度学习和计算机视觉技术&#xff0c;专为提高养猪业的管理效率和精确度而设计。该系统利用YOLOv5这一先进的目标检测模型&#xff0c;能够实时、准确地在图像或视频中识别并…

数据库系统 第34节 数据库压缩

数据库压缩是一种优化技术&#xff0c;它通过压缩数据库中的数据来减少所需的存储空间&#xff0c;并且可以加速数据的读取和写入操作&#xff08;尤其是在带宽受限的情况下&#xff09;。压缩通常是在数据写入磁盘之前执行&#xff0c;并在数据被读取到内存中之前解压。数据库…

python元组和java的区别

元组 Python 中的元组可以用来返回多个值&#xff0c;这些值可以被其他变量分别接收。这个特性被称为“多值返回”或“解包&#xff08;unpacking&#xff09;”。当一个函数返回多个值时&#xff0c;Python 会自动将它们打包成一个元组&#xff0c;并且可以在调用函数时将这些…

苹果mac数据恢复概率大吗 mac数据恢复专业软件哪个好用

一般情况下&#xff0c;当我们把电脑中的数据删掉后&#xff0c;都会保存在回收站里面&#xff0c;但如果回收站被清空了或者数据在回收站中没有找到的话&#xff0c;那么&#xff0c;之前被删掉的数据还能恢复吗&#xff1f;恢复的概率有多大呢&#xff1f; 答案是可以的&…