Unity PlayerPrefs、JsonUtility

news/2025/3/31 8:51:41/

Unity中有两个常用的数据存储方式:PlayerPrefs和JsonUtility。

  1. PlayerPrefs

PlayerPrefs是Unity内置的一种轻量级数据存储方式,可用于存储少量的游戏数据,如分数、解锁状态等。使用PlayerPrefs需要注意以下几点:

  • 存储数据时,需要使用字符串作为键(key)和值(value)。
  • 存储的值只能是int、float、string三种类型,如果需要存储其他类型的数据,需要进行类型转换。
  • 存储数据后,需要调用Save方法,将数据保存在本地。

以下是使用PlayerPrefs存储和读取数据的示例:

// 存储数据
PlayerPrefs.SetInt("Score", 100);
PlayerPrefs.SetString("UserName", "John");
PlayerPrefs.Save();// 读取数据
int score = PlayerPrefs.GetInt("Score");
string userName = PlayerPrefs.GetString("UserName");
  1. JsonUtility

JsonUtility是Unity内置的一个用于序列化和反序列化Json数据的工具,可用于存储和读取复杂的游戏数据,如游戏设置、存档等。使用JsonUtility需要注意以下几点:

  • 存储数据时,需要将数据序列化为Json格式的字符串。
  • 反序列化数据时,需要将Json格式的字符串反序列化为对应的数据结构。
  • 由于JsonUtility只支持一些基本数据类型(如int、float、string等)和一些内置数据结构(如数组、字典等),如果需要存储自定义的数据结构,需要进行相应的转换。

以下是使用JsonUtility存储和读取数据的示例:

// 定义数据结构
[System.Serializable]
public class PlayerData
{
public int score;
public string userName;
public float[] position;
}// 存储数据
PlayerData data = new PlayerData();
data.score = 100;
data.userName = "John";
data.position = new float[] { 1.0f, 2.0f, 3.0f };
string json = JsonUtility.ToJson(data);
File.WriteAllText(Application.dataPath + "/playerData.json", json);// 读取数据
string jsonString = File.ReadAllText(Application.dataPath + "/playerData.json");
PlayerData loadedData = JsonUtility.FromJson<PlayerData>(jsonString);
int score = loadedData.score;
string userName = loadedData.userName;
float[] position = loadedData.position;

注意:使用JsonUtility存储和读取数据时,需要将数据转换为Json格式的字符串,并将其保存在本地文件中,因此需要注意数据的安全性和完整性。


http://www.ppmy.cn/news/63906.html

相关文章

【id:115】【20分】D. 向量4(类复合)

文章目录 一、题目描述二、输入与输出1.输入2.输出 三、参考代码四、题解思路 一、题目描述 为向量1题目中实现的CVector类增加成员函数float Average()&#xff0c;计算n维向量的平均值并返回。 定义CStudent类&#xff0c;私有数据成员为&#xff1a; string name; // 姓名…

JavaScript (五) -- JavaScript 事件(事件的绑定方式)

目录 1. JavaScript 事件的概述: 2. 事件的绑定(两种方式): 1. JavaScript 事件的概述: JavaScript事件是指当网页中某个元素被触发时,可以执行一些JS代码来处理这个事件,例如鼠标单击、鼠标移动、键盘按键等。事件通常被认为是浏览器与用户交互的方式之一…

CSS布局基础(精灵图 字体图标 css 三角图标)

精灵图 & 字体图标 & css 三角图标 精灵图使用字体图标下载字体图标使用方式icomoon阿里 iconfontttf 字体 unicodecss 方式js 方式 更新字体图标icomoon阿里 iconfont css三角图标标准三角&#xff08;垂直的两边相等&#xff09;先来个普通盒子&#xff08;当然是五…

深入探究C++中的STL:容器、迭代器与算法全解析

C 基础知识 四 认识STL 上一、 概述1. 起源 Standard Template Library2. 发展历程3. 组成部分与内部实现原理4. 优点和局限性4.1优点4.2局限二、容器1. 定义2. 序列容器2.1 vector2.2 deque2.3 list2.4 forward_list3. 关联容器3.1 set 与 multiset3.2 map 与 multimap4. 无序…

ORA-01555 ORA-22924 快照过旧问题处理

ORA-01555 ORA-22924 快照过旧问题处理 问题描述 使用数据泵导出数据&#xff0c;或在业务功能查询某个表时&#xff0c;可能出现 ORA-01555 ORA-22924 快照过旧的错误&#xff1a; ORA-01555: snapshot too old: rollback segment number with name "" too small…

动画图解常见串行通讯协议:SPI、I²C、UART、红外分析

一、SPI传输 图1&#xff1a;SPI 数据传输 图1.2&#xff1a;SPI数据传输&#xff08;2&#xff09; ​ 图1.3&#xff1a; SPI时序信号 二、IC传输 图1.2.1&#xff1a; I2C总线以及寻址方式 三、UART传输 图1.3.1&#xff1a;PC 上通过UART来调试MCU 图1.3.2&#xff1a;R…

信息与信息化的基本概念

信息与信息化的基本概念 信息的定义 香农&#xff1a;信息就是不确定性的减少。维纳【控制论】&#xff1a;信息就是信息&#xff0c;既不是物质&#xff0c;也不是能量&#xff0c;但他们之间可以相互转化。【统一概括】&#xff1a;信息是对客观事物变化的特征和反映&#…

VR与AR:哪个有更大的潜力改变未来?

VR&#xff08;虚拟现实&#xff09;和AR&#xff08;增强现实&#xff09;都是令人兴奋的技术&#xff0c;它们在改变未来的方式上具有各自的潜力和应用领域。以下是对它们的潜力和限制的一些观点&#xff1a; VR的潜力&#xff1a; 1. 沉浸式体验&#xff1a; VR可以提供沉…