Unity关于easySave2 easySave3保存数据的操作;包含EasySave3运行报错的解决
关于easySave2 easySave3保存数据的操作;包含EasySave3运行报错的解决
/// 数据存储路径(Easy Save的默认储存位置为:Application.persistentDataPath,为了方便我们可以给它指定储存路径) #region 存储数据/*/// /// 存储数据/// private void SaveData(){ES2.Save(123, dataPath + "IntData");ES2.Save(1.23f, dataPath + "FloatData");ES2.Save(true, dataPath + "BoolData");ES2.Save("abc", dataPath + "StringData");ES2.Save(new Vector3(10, 20, 30), dataPath + "Vector3Data");///< 存储transform GameObject go = new GameObject();go.transform.localPosition = new Vector3(10, 20, 30);go.transform.localScale = new Vector3(3, 3, 3);ES2.Save(go.transform, dataPath + "TransformData");///< 存储数组int[] intArray = new int[3] { 3, 2, 1 };ES2.Save(intArray, dataPath + "IntArrayData");///< 存储集合List<string> stringList = new List<string>();stringList.Add("stringlist1");stringList.Add("stringlist2");stringList.Add("stringlist3");ES2.Save(stringList, dataPath + "StringListData");///< 存储字典Dictionary<int, string> stringDict = new Dictionary<int, string>();stringDict.Add(1, "a");stringDict.Add(2, "b");ES2.Save(stringDict, dataPath + "StringDictData");///< 存储栈Stack<string> stringStack = new Stack<string>();stringStack.Push("aaa");stringStack.Push("bbb");ES2.Save(stringStack, dataPath + "StringStackData");//保存图片 注意:该图片原文件属性“Advanced: Read/WriteEnable[*]”勾选可读写的// ES2.SaveImage(image.sprite.texture, "MyImage.png");}*/#endregion#region 加载数据/*/// /// 加载数据/// private void LoadData(){int loadInt = ES2.Load<int>(dataPath + "IntData");Debug.Log("读取的int:" + loadInt);float loadFloat = ES2.Load<float>(dataPath + "FloatData");Debug.Log("读取的float:" + loadFloat);bool loadBool = ES2.Load<bool>(dataPath + "BoolData");Debug.Log("读取的bool:" + loadBool);string loadString = ES2.Load<string>(dataPath + "StringData");Debug.Log("读取的string:" + loadString);Vector3 loadVector3 = ES2.Load<Vector3>(dataPath + "Vector3Data");Debug.Log("读取的vector3:" + loadVector3);Transform loadTransform = ES2.Load<Transform>(dataPath + "TransformData");Debug.Log("读取的transform: Position++" + loadTransform.localPosition + " +++Scale++" + loadTransform.localScale);///< 读取数组格式存储int[] loadIntArray = ES2.LoadArray<int>(dataPath + "IntArrayData");foreach (int i in loadIntArray){Debug.Log("读取的数组:" + i);}///< 读取集合格式存储List<string> loadStringList = ES2.LoadList<string>(dataPath + "StringListData");foreach (string s in loadStringList){Debug.Log("读取的集合数据:" + s);}///< 读取字典格式存储Dictionary<int, string> loadStringDict = ES2.LoadDictionary<int, string>(dataPath + "StringDictData");foreach (var item in loadStringDict){Debug.Log("读取的字典数据: key" + item.Key + " value" + item.Value);}Stack<string> loadStringStack = ES2.LoadStack<string>(dataPath + "StringStackData");foreach (string ss in loadStringStack){Debug.Log("读取的栈内数据:" + ss);}///< 读取纹理 注意:该图片原文件属性“Advanced: Read/WriteEnable[*]”勾选可读写的Texture2D tex = ES2.LoadImage("MyImage.png");Sprite temp = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0, 0));// showImage.sprite = temp;}*/#endregion#region 删除数据/*/// /// 删除数据/// private void DeleteData(){///< 判断是否有该存储keyif (ES2.Exists(dataPath + "IntData")){Debug.Log(ES2.Exists(dataPath + "IntData"));///< 删除存储keyES2.Delete(dataPath + "IntData");}}*/#endregion#region GUI测试用的 UI按钮/*void OnGUI(){if (GUI.Button(new Rect(0, 0, 100, 100), "储存数据")){SaveData();}if (GUI.Button(new Rect(0, 100, 100, 100), "读取数据")){LoadData();}if (GUI.Button(new Rect(0, 200, 100, 100), "删除数据")){DeleteData();}}*/#endregion#region 保存到本地/保存到web:/*public IEnumerator UploadMesh(Mesh mesh, string tag)
{// Create a URL and add parameters to the end of it.string myURL = "http://www.server.com/ES2.php";myURL += "?webfilename=myFile.txt&webusername=user&webpassword=pass";// Create our ES2Web object.ES2Web web = new ES2Web(myURL + "&tag=" + tag);// Start uploading our data and wait for it to finish.yield return StartCoroutine(web.Upload(mesh));if (web.isError){// Enter your own code to handle errors here.Debug.LogError(web.errorCode + ":" + web.error);}
}public IEnumerator DownloadMesh(string tag)
{// Create a URL and add parameters to the end of it.string myURL = "http://www.server.com/ES2.php";myURL += "?webfilename=myFile.txt&webusername=user&webpassword=pass";// Create our ES2Web object.ES2Web web = new ES2Web(myURL + "&tag=" + tag);// Start downloading our data and wait for it to finish.yield return StartCoroutine(web.Download());if (web.isError){// Enter your own code to handle errors here.Debug.LogError(web.errorCode + ":" + web.error);}else{// We could save our data to a local file and load from that.web.SaveToFile("myFile.txt");// Or we could just load directly from the ES2Web object.this.GetComponent<MeshFilter>().mesh = web.Load<Mesh>(tag);}
}*/#endregion#region 最新版的easySave3运行会报错,按照以下修改即可:/** private void Start(){if (LoadEvent==LoadEvent.OnStart&&settings!=null){Load();}}*/#endregion#region 读取/保存 音频/*// Get the AudioSource we want to use to play our AudioClip.var source = this.GetComponent<AudioSource>();// Load an AudioClip from the streaming assets folder into our source.source.clip = ES3.LoadAudio(Application.streamingAssetsPath + "/AudioFile.wav");// Play the AudioClip we just loaded using our AudioSource.source.Play();// Get the AudioSource containing our AudioClip.var source = this.GetComponent<AudioSource>();// Save an AudioClip in Easy Save's uncompressed format.ES3.Save<AudioClip>("myAudio", source.clip);// Load the AudioClip back into the AudioSource and play it.source.clip = ES3.Load<AudioClip>("myAudio");source.Play();*/#endregion#region 从Resource加载/*文件必须具有扩展名 例如:.bytes,以便能够从参考资料中加载它// Create an ES3Settings object to set the storage location to Resources.var settings = new ES3Settings();settings.location = ES3.Location.Resources;// Load from a file called "myFile.bytes" in Resources.var myValue = ES3.Load<Vector3>("myFile.bytes", settings);// Load from a file called "myFile.bytes" in a subfolder of Resources.var myValue = ES3.Load<Vector3>("myFolder/myFile.bytes");*/#endregion#region 把 一堆键值数据 保存为string/byte[]/*// Create a new ES3File, providing a false parameter.var es3file = new ES3File(false);// Save your data to the ES3File.es3File.Save<Transform>("myTransform", this.transform);es3File.Save<string>("myName", myScript.name);// etc ...//保存为字符串string fileAsString = es3File.LoadRawString();//保存为 字节数组byte[] fileAsByteArray = es3File.LoadRawBytes().*/#endregion#region 从 字符串/byte[] 读取/** //把字节数组转换成参数// If we're loading from a byte array, simply provide it as a parameter.var es3file = new ES3File(fileAsByteArray, false);// 把字符串转换为参数// 如果我们以字符串的形式加载,首先需要将其转换为字节数组,再把字节数组转换为参数。var es3file = new ES3File((new ES3Settings()).encoding.GetBytes(fileAsString), false);//再对应取出响应的值// Load the data from the ES3File.es3File.LoadInto<Transform>("myTransform", this.transform);//取出该值赋值到自身myScript.name = es3File.Load<string>("myName"); //取出 name// etc ...*/#endregion#region 电子表格/*使用ES3Spreadsheet, Easy Save能够创建电子表格并以CSV格式存储,所有流行的电子表格软件都支持这种格式,包括 Excel、OSX数字和OpenOffice。保存:var sheet = new ES3Spreadsheet();// Add data to cells in the spreadsheet.for(int col=0; col<10; col++){for(int row=0; row<8; row++){sheet.SetCell<string>(col, row, "someData");}}sheet.Save("mySheet.csv");*//*如果要将数据追加到现有的电子表格,请将电子表格的追加变量设置为true。电子表格中的任何行都将被添加到保存到的行末尾。读取:// Create a blank ES3Spreadsheet.var sheet = new ES3Spreadsheet();sheet.Load("spreadsheet.csv");// Output the first row of the spreadsheet to console.for(int col=0; col<sheet.ColumnCount; col++)Debug.Log(sheet.GetCell<int>(col, 0));*/#endregion
相关文章:
Unity关于easySave2 easySave3保存数据的操作;包含EasySave3运行报错的解决
关于easySave2 easySave3保存数据的操作;包含EasySave3运行报错的解决 /// 数据存储路径(Easy Save的默认储存位置为:Application.persistentDataPath,为了方便我们可以给它指定储存路径) #region 存储数据/*/// /// 存…...
2022年全球软件质量效能大会(QECon上海站)-核心PPT资料下载
一、峰会简介 近年来,以云计算、移动互联网、物联网、工业互联网、人工智能、大数据及区块链等新一代信息技术构建的智能化应用和产品出现爆发式增长,突破了对于软件形态的传统认知,正以各种展现方式诠释着对新型智能软件的定义。这也使得对…...
【python报错】UserWarning: train_labels has been renamed targets
UserWarning: train_labels has been renamed targetswarnings.warn(“train_labels has been renamed targets”) 这是一条 Python 警告信息,它表示 train_labels 这个变量已经被重命名为 targets,在将来的版本中可能会移除 train_labels。因此&#x…...
算法专题四:前缀和
前缀和 一.一维前缀和(模板):1.思路一:暴力解法2.思路二:前缀和思路 二. 二维前缀和(模板):1.思路一:构造前缀和数组 三.寻找数组的中心下标:1.思路一:前缀和 四.除自身以外数组的乘积ÿ…...
STM32学习笔记十五:WS2812制作像素游戏屏-飞行射击游戏(5)探索动画之帧动画
本章又是个重要的章节——动画。 动画,本质上时一系列静态的画面连续播放,欺骗人眼产生动画效果。这个原理自打十九世纪电影诞生开始,就从来没变过。 我们的游戏中也需要一些动画效果,比如,被击中时的受伤效果&#…...
期末复习(程序设计)
根据字符出现频率排序 【问题描述】 给定一个字符串 s ,根据字符出现的 频率 对其进行降序排序。一个字符出现的频率是它出现在字符串中的次数。 返回已排序的字符串。 频率相同的的字符按ascii值降序排序。 s不包含空格、制表符、换行符等特殊字符。 【输入格…...
html-css-js移动端导航栏底部固定+i18n国际化全局
需求:要做一个移动端的仿照小程序的导航栏页面操作,但是这边加上了i18n国家化,由于页面切换的时候会导致国际化失效,所以写了这篇文章 1.效果 切换页面的时候中英文也会跟着改变,不会导致切换后回到默认的语言 2.实现…...
Ubuntu Linux 入门指南:面向初学者
目录 1. Ubuntu Linux 简介 Ubuntu 的由来 Ubuntu 与其他 Linux 发行版的比较 Debian: Fedora: openSUSE: Arch Linux: Linux Mint: 第二部分:安装 Ubuntu 1. 准备安装 系统需求 创建 Ubuntu 启…...
常见算法面试题目
前言 总结一些常见的算法题目,每一个题目写一行思路,方便大家复习。具体题目的来源是下面的网站。 剑指offer 剑指offe2 leetcode200题 leetcode 100题 leetcode150题 leetcode 75题 文章目录 前言二叉树非递归遍历牛客JZ31 栈的压入、弹出序列 (…...
PiflowX组件-JDBCWrite
JDBCWrite组件 组件说明 使用JDBC驱动向任意类型的关系型数据库写入数据。 计算引擎 flink 有界性 Sink: Batch Sink: Streaming Append & Upsert Mode 组件分组 Jdbc 端口 Inport:默认端口 outport:默认端口 组件属性 名称展示名称默…...
算法导论复习题目
这题需要考虑什么呢? 一换元,二要使用主方法猜出结果,三是证明的时候添加一个低阶项来消除 LC检索 C(x)是从上帝视角来看的成本 对C(x)的一个估计: 由两个部分组成,就相当于由以往的经验对未来…...
HTTPS协议详解
目录 前言 一、HTTPS协议 1、加密是什么 2、为什么要加密 二、常见加密方式 1、对称加密 2、非对称加密 三、数据摘要与数据指纹 1、数据摘要 2、数据指纹 四、HTTPS加密策略探究 1、只使用对称加密 2、只使用非对称加密 3、双方都使用非对称加密 4、对称加密非…...
菜鸟学习vue3笔记-vue3 router回顾
1、路由router pnpm i vue-router2、创建使用环境 1.src下创建 router文件夹、里面创建index.ts文件 //创建一个路由暴露出去//1.引入createRouter import { createRouter, createWebHistory } from "vue-router";// import Home from ../components/Home.vue//…...
Mybatis枚举类型处理和类型处理器
专栏精选 引入Mybatis Mybatis的快速入门 Mybatis的增删改查扩展功能说明 mapper映射的参数和结果 Mybatis复杂类型的结果映射 Mybatis基于注解的结果映射 Mybatis枚举类型处理和类型处理器 再谈动态SQL Mybatis配置入门 Mybatis行为配置之Ⅰ—缓存 Mybatis行为配置…...
2023 NCTF writeup
CRYPTO Sign 直接给了fx,gx,等于私钥给了,直接套代码,具体可以参考: https://0xffff.one/d/1424 fx [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…...
golang的大杀器协程goroutine
在Golang中,协程(Goroutine)是轻量级的执行单元,用于实现并发编程。它是Golang语言的重要组成部分,提供了简洁、高效的方式来处理并发任务。 特点: 1)轻量级:Go语言的协程是轻量级…...
[Angular] 笔记 9:list/detail 页面以及@Output
1. Output input 好比重力,向下传递数据,list 传给 detail,smart 组件传给 dumb 组件,父组件传给子组件。input 顾名思义,输入数据给组件。 output 与之相反,好比火箭,向上传递数据或事件。ou…...
Linux学习笔记(一)
如果有自己的物理服务器请先查看这篇文章 文章目录 网卡配置Linux基础指令ls:列出目录内容cd(mkdir.rmkdir): 切换文件夹(创建,删除操作)cp:复制文件或目录mv:文件/文件夹移动cat:查看文件vi:文件查看编辑man:查看命令手册more: 查看文件内容less : 查看文件内容 ps: 显示当前进…...
Python 爬虫 教程
python爬虫框架:Scrapyd,Feapder,Gerapy 参考文章: python爬虫工程师,如何从零开始部署ScrapydFeapderGerapy? - 知乎 神器!五分钟完成大型爬虫项目 - 知乎 爬虫框架-feapder - 知乎 scrap…...
uniapp原生插件 - android原生插件打包流程 ( 避坑指南一)
【彩带- 避坑知识点】: 当时开发中安卓插件打包成功后,uniapp引用插件aar,用云打包 ,总是提示不包含插件。原因是因为module的androidManifest.xml文件没有注册activity。 这一步 很重要,一定要注册。 --------------------------…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
