最近在开发的时候遇到的问题:在用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 的数据保存问题相关推荐

  1. Unity Easy Save数据保存插件将数据保存到Android手机根目录

    Unity Easy Save数据保存插件将数据保存到Android手机根目录 原由 导入插件 设置保存路径 测试脚本 界面 测试验证 问题 原由 开发时碰到一个需求,两个手机APP,一个保存数据,一 ...

  2. Unity 持久化存储以及实时数据保存

    Unity 持久化存储以及实时数据保存 数据存储 数据持久化 示例工程下载 代码搭载 最终运行运行 代码很简单没有难度,都有注解,随便 康一康 就会了. 数据存储 使用 ScriptableObjec ...

  3. Unity EasySave3中文图文教程详解-万能数据保存插件多平台支持

    Chinar blog :www.chinar.xin Unity插件 - EasySave中文详解 本文提供全流程,中文翻译. Chinar 的初衷是将一种简单的生活方式带给世人 使有限时间 具备无 ...

  4. Unity用于储存数据的几种方式

    · 编辑器插件使用类: 1. SessionState 描述 SessionState 是一种键/值存储,旨在存储和检索应在重新加载程序集期间保留的 Editor 会话状态. 退出 Unity 时,系 ...

  5. 为多模型寻找模型最优参数、多模型交叉验证、可视化、指标计算、多模型对比可视化(系数图、误差图、混淆矩阵、校正曲线、ROC曲线、AUC、Accuracy、特异度、灵敏度、PPV、NPV)、结果数据保存

    使用randomsearchcv为多个模型寻找模型最优参数.多模型交叉验证.可视化.指标计算.多模型对比可视化(系数图.误差图.classification_report.混淆矩阵.校正曲线.ROC曲 ...

  6. Python将Pandas中Dataframe数据保存为gzip/zip文件:gzip压缩文件、zip压缩文件

    Python将Pandas中Dataframe数据保存为gzip/zip文件:gzip压缩文件.zip压缩文件 目录 Python将Pandas中Dataframe数据保存为gzip/zip文件:gz ...

  7. R将dataframe数据保存为csv文件

    R将dataframe数据保存为csv文件 目录 R将dataframe数据保存为csv文件 使用write.csv函数 使用reader包中的write_csv函数

  8. Jsoup:使用Java将爬虫得到的数据写入Excel,Jsoup得到的数据进行持久化,爬虫数据保存到本地Excel中

    Jsoup:使用Java将爬虫得到的数据写入Excel,Jsoup得到的数据进行持久化,爬虫数据保存到本地Excel中 一.资源 EasyExcel使用教程 Jsoup爬虫教程 二.代码 xml依赖 ...

  9. python怎么读取txt文件数据保存数组中-Python Numpy中数据的常用的保存与读取方法...

    在经常性读取大量的数值文件时(比如深度学习训练数据),可以考虑现将数据存储为Numpy格式,然后直接使用Numpy去读取,速度相比为转化前快很多. 下面就常用的保存数据到二进制文件和保存数据到文本文件 ...

最新文章

  1. 【组队学习】【29期】1. 编程实践(数据可视化)
  2. redis bitmap
  3. Angular 选项卡
  4. wireshark数据包分析实战
  5. 明明还有大量内存,为啥报错“无法分配内存”?
  6. matlab中的libsvm怎么录入数据啊,LibSVM在MATLAB中使用时的几个问题
  7. day20——安装客户端、数据库连接、mysql事务、mysql操作数据
  8. 怎样把计算机放到手机桌面,如何将电脑桌面的文档发送到手机微信
  9. 如何在不接收返回值的情况下获取返回值?
  10. 【Labplus 3】Scratch获取角色造型的数量
  11. 运行时库(runtime library)
  12. 【生信技能树】GEO数据库挖掘 P5
  13. LCS算法和背包算法
  14. c语言--余数正负判断,printf函数占位符
  15. (10)大类资产配置一升级版股债平衡
  16. AUTOCAD——图纸歪了如何对齐
  17. Excel将多行文本合并一行:phonetic函数
  18. HTTPSConnectionPool(host=‘files.pythonhosted.org‘, port=443): Read timed out.
  19. MFC连接sqlite3数据库
  20. vue中v-if 不重新渲染组件的问题

热门文章

  1. Android推送原理。
  2. SNTP服务器如何实现计算机时间同步?
  3. 安全即服务 公共WiFi新格局显端倪
  4. 统计学考研笔记:矩估计量计算1
  5. 小程序wx:if 隐藏显示时频幕闪烁问题
  6. StringTokenizer的学习
  7. 解决Element type “http:“ must be followed by either attribute specifications, “>“ or “/>“.
  8. Android中关于notifyDataSetChanged()方法的注意
  9. 物联网平台搭建的全过程介绍(十)阿里云服务器ESC上安装MySQL数据库
  10. Java解惑:类之谜