关于Unity ScriptableObject 的数据保存问题
最近在开发的时候遇到的问题:在用ScriptableObject进行保存数据的时候,并不是所有的数据都能正常保存,这让人很是难受。所以我决定系统性地整理一下这个问题:
注:建议大家将自己的Unity文件保存方式设置为Text而不是二进制,这样用记事本打开保存的Assest文件就能明码查看内容。可以清楚地看见自己哪些数据保存了,而哪些没有。
可以通过上述方式再查看自己是否是用文本方式再保存文件;
哪些类型的数据能直接保存?
首先,单纯的String、Bool 、Int之类的值都是能正常保存的。
引用的脚本、预制、资源当然也是能直接保存的。(他们会转换成文件ID)
然后是一些数据容器:
列表、数组(仅限一维数组)是可以直接保存的。
至于类,当然是要设置为可序列化才能保存(System.Serializable)。
哪些不能直接保存?
其实这个才是关键的地方:二维数组、字典是不能直接保存的!
不论你在属性面板如何编辑,在脚本里面如何添加代码,二维数组和字典都是不能保存进Assest的。
需要注意的是,如果你用了Odin插件,或者你自己实现了二维数组/字典在属性面板上的显示方法,你自然是可以编辑的,但是并不一定能保存!
这里插句嘴,说下Odin插件。Odin Inspector可以序列化字典,但是在跨平台时这个字典未必能读出来。这种时候需要编写他的AOT Genteration,详见 : https://blog.csdn.net/cyf649669121/article/details/111795715 。
可能是Unity没有像字典这种键值对,或者多维数组的保存方式吧……反正这种类型就是不会保存成功的,切记!
解决方案:
其实也没啥好的解决方案,他本身不能保存,只有将其装换成能保存的类型。
例如字典,只能让他变成列表。你可以一列存键,一列存值,或者干脆放一起也可以。
至于二维数组,也是类似的方法:存一个大小,然后把值转成一维数组存下来。
虽然用蛋疼的方式解决了,我还是觉得这个ScriptableObject的保存机制很坑。当然也有可能是我没有找到正确的API导致的,如果有大佬知道更方便的办法、能直接保存的方法,欢迎留言告诉我~~
━(*`∀´*)ノ亻!
关于Unity ScriptableObject 的数据保存问题相关推荐
- Unity Easy Save数据保存插件将数据保存到Android手机根目录
Unity Easy Save数据保存插件将数据保存到Android手机根目录 原由 导入插件 设置保存路径 测试脚本 界面 测试验证 问题 原由 开发时碰到一个需求,两个手机APP,一个保存数据,一 ...
- Unity 持久化存储以及实时数据保存
Unity 持久化存储以及实时数据保存 数据存储 数据持久化 示例工程下载 代码搭载 最终运行运行 代码很简单没有难度,都有注解,随便 康一康 就会了. 数据存储 使用 ScriptableObjec ...
- Unity EasySave3中文图文教程详解-万能数据保存插件多平台支持
Chinar blog :www.chinar.xin Unity插件 - EasySave中文详解 本文提供全流程,中文翻译. Chinar 的初衷是将一种简单的生活方式带给世人 使有限时间 具备无 ...
- Unity用于储存数据的几种方式
· 编辑器插件使用类: 1. SessionState 描述 SessionState 是一种键/值存储,旨在存储和检索应在重新加载程序集期间保留的 Editor 会话状态. 退出 Unity 时,系 ...
- 为多模型寻找模型最优参数、多模型交叉验证、可视化、指标计算、多模型对比可视化(系数图、误差图、混淆矩阵、校正曲线、ROC曲线、AUC、Accuracy、特异度、灵敏度、PPV、NPV)、结果数据保存
使用randomsearchcv为多个模型寻找模型最优参数.多模型交叉验证.可视化.指标计算.多模型对比可视化(系数图.误差图.classification_report.混淆矩阵.校正曲线.ROC曲 ...
- Python将Pandas中Dataframe数据保存为gzip/zip文件:gzip压缩文件、zip压缩文件
Python将Pandas中Dataframe数据保存为gzip/zip文件:gzip压缩文件.zip压缩文件 目录 Python将Pandas中Dataframe数据保存为gzip/zip文件:gz ...
- R将dataframe数据保存为csv文件
R将dataframe数据保存为csv文件 目录 R将dataframe数据保存为csv文件 使用write.csv函数 使用reader包中的write_csv函数
- Jsoup:使用Java将爬虫得到的数据写入Excel,Jsoup得到的数据进行持久化,爬虫数据保存到本地Excel中
Jsoup:使用Java将爬虫得到的数据写入Excel,Jsoup得到的数据进行持久化,爬虫数据保存到本地Excel中 一.资源 EasyExcel使用教程 Jsoup爬虫教程 二.代码 xml依赖 ...
- python怎么读取txt文件数据保存数组中-Python Numpy中数据的常用的保存与读取方法...
在经常性读取大量的数值文件时(比如深度学习训练数据),可以考虑现将数据存储为Numpy格式,然后直接使用Numpy去读取,速度相比为转化前快很多. 下面就常用的保存数据到二进制文件和保存数据到文本文件 ...
最新文章
- 【组队学习】【29期】1. 编程实践(数据可视化)
- redis bitmap
- Angular 选项卡
- wireshark数据包分析实战
- 明明还有大量内存,为啥报错“无法分配内存”?
- matlab中的libsvm怎么录入数据啊,LibSVM在MATLAB中使用时的几个问题
- day20——安装客户端、数据库连接、mysql事务、mysql操作数据
- 怎样把计算机放到手机桌面,如何将电脑桌面的文档发送到手机微信
- 如何在不接收返回值的情况下获取返回值?
- 【Labplus 3】Scratch获取角色造型的数量
- 运行时库(runtime library)
- 【生信技能树】GEO数据库挖掘 P5
- LCS算法和背包算法
- c语言--余数正负判断,printf函数占位符
- (10)大类资产配置一升级版股债平衡
- AUTOCAD——图纸歪了如何对齐
- Excel将多行文本合并一行:phonetic函数
- HTTPSConnectionPool(host=‘files.pythonhosted.org‘, port=443): Read timed out.
- MFC连接sqlite3数据库
- vue中v-if 不重新渲染组件的问题
热门文章
- Android推送原理。
- SNTP服务器如何实现计算机时间同步?
- 安全即服务 公共WiFi新格局显端倪
- 统计学考研笔记:矩估计量计算1
- 小程序wx:if 隐藏显示时频幕闪烁问题
- StringTokenizer的学习
- 解决Element type “http:“ must be followed by either attribute specifications, “>“ or “/>“.
- Android中关于notifyDataSetChanged()方法的注意
- 物联网平台搭建的全过程介绍(十)阿里云服务器ESC上安装MySQL数据库
- Java解惑:类之谜