IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity之数据持久化——PlayerPrefs -> 正文阅读

[游戏开发]Unity之数据持久化——PlayerPrefs

什么是数据持久化?

数据持久化就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内从中的数据模型的统称

即:游戏数据存储到硬盘,硬盘中的数据读取到游戏中

游戏运行时—(变量数据)—内存<——>硬盘

PlayerPref是Unity提供的可以用于存储读取玩家数据的公共类

1、存储相关

PlayerPrefs的数据存储类似于键值对存储,一个键对应一个值,提供了存储3中数据的方法:int,float,string

键:string类型

值:int,float,string,对应3中API

PlayerPrefs.SetInt("myAge", 18);
PlayerPrefs.SetFloat("myHeight", 177.5f);
PlayerPrefs.SetString("myName", "hp”);

直接调用Set方法,只会把数据存到内存里,当游戏结束是,Unity会自动把数据存到硬盘中,如果游戏不是正常结束,而是崩溃,数据是不会存到硬盘中的

// 只要调用该方法,就会马上存储到硬盘中

PlayerPrefs.Save();

PlayerPrefs是由局限性的,它只能存3中类型的数据,如果想要存储别的类型的数据,只能降低精度,或者上升精度来进行存储

// 如果想存入bool类型的值

bool sex = true;
PlayerPrefs.SetInt("sex", sex ? 1: 0);

// 如果不同类型用同一键名进行存储,会进行覆盖

PlayerPrefs.SetFloat("myAge", 20.2f);

那么myAge的值从int类型的18变为20.2f

2、读取相关

// 注意,运行时,只要Set了对应键值对,即使现在没有马上存储Save在本地,也能够读取信息,即有限在内存中寻找,如果没有才会在本地硬盘中查找

// int
int age = PlayerPrefs.GetInt("myAge");

如果没有对应的键,即键名或者类型错误,那么会返回一个默认值,默认值可以通过重载第二个参数设置:

// int
int age = PlayerPrefs.GetInt("myAge", 100);

// float
float height = PlayerPrefs.GetFloat("myHeight", 1000f);

// string,可以不传默认参数,即使没有也会返回空字符串
string name = PlayerPrefs.GetString("myName");

// 判断数据是否存在(主要用来判断键名是否重复避免被覆盖)

if (PlayerPrefs.HasKey("myName")) {
    // 相关操作
}

4、删除数据

(1)删除指定键值对

PalyerPrefs。DeleteKey("myAge");

(2)删除所有存储的信息 (通常测试时使用)

PlayerPrefs.DeleteAll()

5、PlayerPrefs数据的存储位置

(1)Windows

HKCU\Software\[公司名称]\[产品名称]项下的注册表中

其中公司和产品名称是在"Project Settings“中设置的名称:File->Build Settings->Player Settings->Player

运行 cmd->regedit:HKEY_CURRENT_UESE->SOFTWARE->UNITY->UnityEditor->公司名称->产品名称

可以对注册表中数据直接进行修改

(2)Android

/data/data/包名/shared_prefs/pkg-name.xml

(3)IOS

/LIbrary/Preferences/[应用ID].plist

6、PlayerPrefs数据的唯一性

PlayerPrefs中不同数据的唯一性,是由key决定的,不同的key决定了不同的数据,同一项目中,如果不同数据key相同,会造成数据丢失,要保证数据不丢失就要建一个保证key位移的规则

总结:

PlayerPrefs优点是:简单,快捷,易懂;

缺点是:重复工作量繁多,自定义数据类都需要自己去实现存储读取的功能,而且代码的相似度极高;数据容易被修改,主要找到文件位置,就可以轻易的进行数据修改

主要用处:单独使用它的原生功能非常适合存储一些对安全性要求不高的简单数据,进行简单的封装也可以变得方便安全

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-04-07 23:02:30  更:2022-04-07 23:03:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/16 21:07:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码