Unity-存档与读档
1. PlayerPrefs。
采用键值对的方式对数据进行存储。
PlayerPrefs.SetInt("Index",1);
// 可以存储Int, Float, String类型的数据。
PlayerPrefs.SetFloat("Height",183.5f);
PlayerPrefs.SetString("Name","Tom");
// 查看数据是否存在
if (PlayerPrefs.HasKey("Index"))// 获取数据:PlayerPrefs.GetInt("Index");
2. 二进制保存
- 首先创建可实例化的Save类
[System.Serializable]
public class Save
{public string stringData;public float floatData;public int intData;// 三维坐标float[] pos = new float[3];// 设置坐标public void PosSet(Vector3 vector3){pos[0] = vector3.x;pos[1] = vector3.y;pos[2] = vector3.z;}// 读取坐标public Vector3 PosGet(){return new Vector3(pos[0], pos[1], pos[2]);}
}
因为三维向量坐标不能直接保存,所以需要间接保存
引入
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
2. 保存
public void Save()
{// 二进制保存Save save = new Save();save.stringData = stringObj.GetComponent<DataText>().inputField.text;save.floatData = float.Parse(floatObj.GetComponent<DataText>().inputField.text);save.intData = int.Parse(intObj.GetComponent<DataText>().inputField.text);save.PosSet(dragObj.transform.position);// 创建一个二进制格式化程序BinaryFormatter bf = new BinaryFormatter();// 创建一个文件流// 位置:C:\Users\用户名\AppData\LocalLow\公司名\项目名FileStream file = File.Create(Application.persistentDataPath + "/gamesave.save");bf.Serialize(file, save);file.Close();Debug.Log("已存档");
}
- 读取
public void Load()
{// 如果文件存在if (File.Exists(Application.persistentDataPath + "/gamesave.save")){// 创建一个二进制格式化程序BinaryFormatter bf = new BinaryFormatter();// 创建一个文件流FileStream file = File.Open(Application.persistentDataPath + "/gamesave.save", FileMode.Open);Save save = (Save)bf.Deserialize(file);file.Close();stringObj.GetComponent<DataText>().inputField.text = save.stringData;floatObj.GetComponent<DataText>().inputField.text = save.floatData.ToString();intObj.GetComponent<DataText>().inputField.text = save.intData.ToString();dragObj.transform.position = save.PosGet();Debug.Log("已读档");}
}
3. XML保存
- 实体类
using System.Collections.Generic;
using System.Xml.Serialization;[System.Serializable]
public class XmlSerlize
{// 属性[XmlAttribute("Id")]public int Id { get; set; }[XmlAttribute("Name")]public string Name { get; set; }// 元素内容[XmlElement("List")]public List<int> Infors { get; set; }
}
- 保存
void SerilizeSave()
{// 初始化XmlSerlize xmlSerlize = new XmlSerlize();xmlSerlize.Id = 1;xmlSerlize.Name = "liluo";xmlSerlize.Infors = new List<int>() { 1, 2, 3, 4 };XmlSerializer xml = new XmlSerializer(xmlSerlize.GetType());// 创建一个文件流FileStream file = new FileStream(Application.persistentDataPath + "/save.xml", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);StreamWriter sw = new StreamWriter(file, System.Text.Encoding.UTF8);xml.Serialize(sw, xmlSerlize);sw.Close();file.Close();
}
- 读取
void SerilizeLoad()
{FileStream file = new FileStream(Application.persistentDataPath + "/save.xml", FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);XmlSerializer xml = new XmlSerializer(typeof(XmlSerilize));XmlSerilize xmlSerlize = (XmlSerilize)xml.Deserialize(file);file.Close();Debug.Log(xmlSerlize.Id);Debug.Log(xmlSerlize.Name);foreach (var xmls in xmlSerlize.Infors)Debug.Log(xmls);
}
Unity-存档与读档相关推荐
- Unity游戏存档与读档
目前unity常见存档和读档有几种方式,也就是常见的存储数据的方式(注意存档和读档都是针对单机游戏而言的,角色信息,道具信息,关卡情况等) Unity存档的方式大概分为这两大类 图片来源自siki学院 ...
- Unity中采用JSON进行存档和读档
在利用JSON做存档和读档之前,首先要在Assets导入一个脚本!这个脚本就是LitJson.dll 然后在Unity中首先创建一个Save脚本,用于保存游戏中相关的信息,在这里我存储的是游戏中怪物的 ...
- C++ 关于存档与读档
c++可以用来制作游戏.可是,如果制作的游戏不能存档,那就特别让人心疼了.这种的游戏通常都是辛辛苦苦玩了半天,好不容易打出的记录,程序重启后,一夜回到解放前. 看着宝贵的血汗数据就这样变为0,小凤我决 ...
- SaveLoad--Unity存档读档的学习总结
存档与读档功能 举例: 传统RPG游戏(仙剑.空之轨迹): 1.角色信息(生命值,等级) 2.道具信息(装备,药品) 3.场景信息(场景名称.角色坐标) 4.事件信息(任务相关) 关卡类游戏:关卡的通 ...
- Unity_二进制,Jason,XML存档读档
创建一个类Save 用来保存游戏的信息,以便于存档 Save.cs的代码 using System.Collections; using System.Collections.Generic; usi ...
- 正版七日杀服务器存档,七日杀网吧怎么存档 七日杀网吧存档读档方法介绍-游侠网...
七日杀的电脑要求配置虽然不是特别高,但是相对于很多玩家的电脑来说还是一个不小的负担的,所以很多玩家会选择去网吧游玩,但是很多玩家发现网吧非主机玩家的人物数据重进总是清零.所以今天小编就为大家带来了便是 ...
- 游戏服务器之存档读档
设计上: (1)存档方式 定时器在一定范围的分钟内随机存档一次,为了避免集中式存档 第一次需要全部存档一次,因为需要存档版本字段 分标签实时存档设置了标签的数据,减少每次存档数据 (2)压缩处理 档案 ...
- [虚幻引擎][UE][UE5]简单的游戏读档存档
[虚幻引擎][UE][UE5]简单的游戏读档存档
- Python 名片管理系统(文件版,可存档读档)
Python 名片管理系统(文件版,可存档读档) 相比于函数版的程序,文件版增加了存档读档操作 函数版的可以参考Python名片管理系统(列表.字典和函数的综合应用) 以下是新增部分的代码(不包括调用 ...
- [Unity存档系统]简单介绍Unity常见存档系统二JSON以及使用方法
学习目标: 如果你和我同样苦恼于游戏相关的数据怎么存储与读取,那么不妨看看这个up主有关Unity存档系统的教程.[Unity] 存档系统 Part 1 | PlayerPrefs | Unity初学 ...
最新文章
- error BK1506
- C - Insertion Sort Gym - 101955C
- 金陵科技学院计算机开设课程,金陵科技学院各专业介绍
- XState Viz 可视化和调试状态机
- K8S - 为 Docker 而生
- Android 性能测试之方向与框架篇
- 分库分表 or 中间件 ?
- 网工学Python——初识函数
- Introduction to Computer Networking学习笔记(二十):delay guarantees延迟速度保证
- linux下nginx环境搭建
- java彩票开奖程序_用java 实现彩票摇奖,猜拳程序
- pgadmin3简单使用
- JRebel的安装与激活
- 903C	Boxes Packing
- 图片怎么转化word文档?分享一个实用的方法。
- C 实现黑客帝国数字雨
- Assassin’s Creed(hdu4415,贪心)
- TR069服务器配置DHCP/IP/PING/Tracert/HTTP/PPPoE等仿真诊断模板及IPWAN和PPPoE WAN模板创建
- python读取文件r_python读入文件时加r的作用?
- Python之复制的cookie参数处理成规整的参数值
热门文章
- C# Word脚注和交叉引用功能
- (保姆级)国内1块钱注册火爆全网的OpenAI-ChatGPT机器人
- microsoft bing browser advance search
- IE浏览器打开github点击code无响应
- jpg转换成pdf转换器免费版
- 利用python批量创建.xsh文件实现Xshell批量登录服务器
- mysql-mmm高可用群集
- 聪明的猴子 黑暗爆炸 - 2429
- java.lang.exceptionininitializererror_解决出现 java.lang.ExceptionInInitializerError错误问题
- 【LeetCode - 马化腾】第一次看到马总的代码