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。 这一步 很重要,一定要注册。 --------------------------…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
前端高频面试题2:浏览器/计算机网络
本专栏相关链接 前端高频面试题1:HTML/CSS 前端高频面试题2:浏览器/计算机网络 前端高频面试题3:JavaScript 1.什么是强缓存、协商缓存? 强缓存: 当浏览器请求资源时,首先检查本地缓存是否命中。如果命…...
Vue3中的computer和watch
computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...
如何把工业通信协议转换成http websocket
1.现状 工业通信协议多数工作在边缘设备上,比如:PLC、IOT盒子等。上层业务系统需要根据不同的工业协议做对应开发,当设备上用的是modbus从站时,采集设备数据需要开发modbus主站;当设备上用的是西门子PN协议时…...
Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目
应用场景: 1、常规某个机器被钓鱼后门攻击后,我们需要做更高权限操作或权限维持等。 2、内网域中某个机器被钓鱼后门攻击后,我们需要对后续内网域做安全测试。 #Win10&11-BypassUAC自动提权-MSF&UACME 为了远程执行目标的exe或者b…...
背包问题双雄:01 背包与完全背包详解(Java 实现)
一、背包问题概述 背包问题是动态规划领域的经典问题,其核心在于如何在有限容量的背包中选择物品,使得总价值最大化。根据物品选择规则的不同,主要分为两类: 01 背包:每件物品最多选 1 次(选或不选&#…...
