写在前面:

写本系列(自用)的目的是回顾已经学过的知识、记录新学习的知识或是记录心得理解,方便自己以后快速复习,减少遗忘。

一、PlayerPrefs的基本方法

1、存储相关

PlayerPrefs的数据存储类似于键值对存储,一个键对应一个值。Unity提供了存储3种数据的方法:int、float、string。其中,键一定是string类型。值可以是以上三种类型,对应三种API:PlayerPrefs.SetInt()、PlayerPrefs.SetFloat()、PlayerPrefs.SetString(),里面传入两个参数,键和值

需要注意的是,直接调用Set相关方法,只会把数据存在内存里,当游戏结束时,会自动把数据存到硬盘里。但是如果游戏不是正常结束,而是崩溃,数据是不会存到硬盘中的。如果加上PlayerPrefs.Save(),只要调用该方法,就会马上存储到硬盘中。

不难发现,playerprefs有局限性,它只能存3种类型的数据,如果你想存别的类型的数据,只能降低精度或者上升精度来存储。例如,double需要降精度为float,无符号整型需要转为有符号整型等。存储bool值需要转换,都会在下面的例子中展示。

最后,还需要注意的是:如果用同一键名进行存储,无论是不是同一类型,都会进行覆盖。需要注意自己是否覆盖存储。

public class lession1 : MonoBehaviour
{void Start(){PlayerPrefs.SetInt("myAge", 1);PlayerPrefs.SetFloat("myHeight", 173.5f);PlayerPrefs.SetString("myName", "Alex");PlayerPrefs.Save();//存bool需要转换bool sex = true;PlayerPrefs.SetInt("sex", sex ? 1 : 0);//如果用同一键名进行存储,无论是不是同一类型,都会进行覆盖PlayerPrefs.SetFloat("myAge", 22.2f);}

2、读取相关

读取存储的数据可以使用Unity提供的API,同存储数据一样,Unity也提供了int、float、string三种数据读取方法。分别使用:PlayerPrefs.GetInt()、PlayerPrefs.GetFloat()、PlayerPrefs.GetString() 。只需要传入一个参数,查找的键名。运行时,只要你set了对应键值对,即使没有马上Save存储在本地,也能够读取出信息。

需要注意的是,如果内存中没有,int、float会返回0,string会返回空。例如,我们在上例中将int型的myAge覆盖存储为了float型。这时候如果调用PlayerPrefs.GetInt("myAge"),就会返回0。

如果希望没找到的时候返回一个固定的值,就可以在读取方法中传入第二个参数。第二个参数为默认值,在没有查找到键的时候返回默认值。

此外,还可以使用PlayerPrefs.HasKey("myName")这个方法判断括号内传入的键是否存在。可以用于在存储值前判断,防止覆盖存储。

public class lession1 : MonoBehaviour
{void Start(){PlayerPrefs.SetInt("myAge", 1);PlayerPrefs.SetFloat("myHeight", 173.5f);PlayerPrefs.SetString("myName", "Alex");PlayerPrefs.Save();PlayerPrefs.SetFloat("myAge", 22.2f);int age = PlayerPrefs.GetInt("myAge");print(age);//可以设置默认值,如果找不到会返回默认值age = PlayerPrefs.GetInt("myAge", 100);print(age);//这里由于键存在,不会返回默认值float height = PlayerPrefs.GetFloat("myHeight", 1000f);print(height);string name = PlayerPrefs.GetString("myName");print(name);if(PlayerPrefs.HasKey("myName")){print("存在myName对应的键值对数据");}}

3、删除数据

删除数据有两个API。第一个API是:PlayerPrefs.DeleteKey("myAge"),括号中传入的是需要删除的键值对的键名。第二个API是:PlayerPrefs.DeleteAll(),作用是删除所有键值对

public class lession1 : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){PlayerPrefs.SetInt("myAge", 1);PlayerPrefs.SetFloat("myHeight", 173.5f);PlayerPrefs.SetString("myName", "Alex");PlayerPrefs.Save();PlayerPrefs.SetFloat("myAge", 22.2f);PlayerPrefs.DeleteKey("myAge");PlayerPrefs.DeleteAll();}

二、PlayerPrefs存储位置

1、存储的数据在哪里

不同平台存储位置不一样,这里介绍Windows、Android、ios。

(1)Windows

PlayerPrefs存储在HKCU\Software\[公司名称]\[产品名称]项下的注册表中,其中公司和产品名称是在“Project Settings”中设置的名称。

首先查看公司和产品名称:File—>Build Settings->Player Settings

然后就可以查看公司名称和产品名称:

找到公司名称和产品名称后,Win+R输入regedit

点击确定后打开注册表编辑器。找到HKEY_CURRENT_USER、Software\Unity\UnityEditor\ 公司名称\产品名称

即可查看并修改存储的信息:

(2)Android

存储在路径:/data/data/包名/shared_prefs/pkg-name.xml

(3)ios

存储在路径:/Library/Preferences/[应用ID].plist

2、PlayerPrefs数据唯一性

PlayerPrefs是中不同数据的唯一性是由key决定的,不同的key决定了不同的数据。需要注意这个唯一性规则。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/95642.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/95642.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/95642.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL tutorials

SQL Literature SQL运行在资料库管理系统(Database Management System),如MySQL,Postgre SQL,Microsoft SQL Server, Oracle,etc。 SQL练习平台:https://sqliteviz.com/ EXAMPLE SQL…

MySQL快速恢复数据的N种方案完全教程

目录 1. 理解MySQL数据恢复的核心逻辑 1.1 数据丢失的常见场景 1.2 MySQL的“救命稻草”:关键文件和机制 2. 方案一:利用全量备份+binlog实现点对点恢复 2.1 准备工作 2.2 恢复步骤 2.3 实战案例 3. 方案二:利用InnoDB的崩溃恢复机制 3.1 崩溃恢复的原理 3.2 恢复步…

双屏加固笔记本电脑C156-2:坚固与高效的完美融合

在当今数字化时代,笔记本电脑已成为人们工作和生活中不可或缺的工具。然而,对于一些特殊行业和恶劣环境下的应用场景,普通笔记本电脑往往难以满足需求。此时,具备坚固耐用、高性能等特点的加固笔记本电脑应运而生。鲁成伟业的双屏…

Jenkins 环境部署

下载相关软件:Jenkins 的安装和设置 相关工具: Git : Git - Downloads java 17: Java Archive Downloads - Java SE 17.0.12 and earlier python : Download Python | Python.org jenkins、jenkins.war : Jenkins 的安装和设置 将所有软件安装后&am…

如何高效解决 Java 内存泄漏问题方法论

目录 一、系统化的诊断与优化方法论 二、获取内存快照:内存泄漏的第一步 (一)自动生成 Heap Dump (二)手动生成 Heap Dump 三、导入分析工具:MAT 和 JProfiler (一)MAT (Memory Analyzer Tool) (二)JProfiler (三)自身企业工具 四、深入分析:逐步排查内存…

HarmonyOS Camera Kit 全解析:从基础拍摄到跨设备协同的实战指南

在移动应用开发中,相机功能往往是提升用户体验的关键模块,但传统相机开发面临权限管理复杂、设备兼容性差、功能实现繁琐等痛点。HarmonyOS 作为面向全场景的分布式操作系统,其 Camera Kit(相机服务)通过统一的 API 接…

运用词向量模型分辨评论

代码实现:import jieba import pandas as pd hp pd.read_table(优质评价.txt,encodinggbk) cp pd.read_table(差评1.txt,encodinggbk) cp_segments [] contents cp.content.values.tolist() for content in contents:results jieba.lcut(content)if len(result…

基于Apache Flink的实时数据处理架构设计与高可用性实战经验分享

基于Apache Flink的实时数据处理架构设计与高可用性实战经验分享 一、业务场景描述 在现代电商平台中,实时用户行为数据(点击、浏览、购物车操作等)对业务决策、个性化推荐和风控都至关重要。我们需要搭建一个高吞吐、低延迟且具备高可用性的…

第二十四天:虚函数与纯虚函数

虚函数(Virtual Function) 定义:在基类中使用 virtual 关键字声明的成员函数,允许在派生类中被重新定义(覆盖,override)。其目的是实现多态性,即通过基类指针或引用调用函数时&#…

uniapp微信小程序-登录页面验证码的实现(springboot+vue前后端分离)EasyCaptcha验证码 超详细

一、项目技术栈登录页面暂时涉及到的技术栈如下:前端 Vue2 Element UI Axios,后端 Spring Boot 2 MyBatis MySQL Redis EasyCaptcha JWT Maven后端使用IntelliJ IDEA 2024.3.5 前端使用 HBuilder X 和 微信开发者工具二、实现功能及效果图过期管理验证码有…

【Java】HashMap的详细介绍

目录 一.HashMap 1.基本概念 2.底层数据结构: 3.HashCode和equals方法 为什么重写HashCode方法? 为什么重新equals方法? 4.put操作 1.初始化和数组检查 2.计算索引并检查桶是否为空 3.桶不为null,处理哈希冲突 4.判断链…

nifi 增量处理组件

在Apache NiFi中,QueryDatabaseTable 是一个常用的处理器,主要用于从关系型数据库表中增量查询数据,特别适合需要定期抽取新增或更新数据的场景(如数据同步、ETL流程)。它的核心功能是通过跟踪指定列的最大值&#xff…

【数据可视化-90】2023 年城镇居民人均收入可视化分析:Python + pyecharts打造炫酷暗黑主题大屏

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

Multiverse模型:突破多任务处理和硬件效率瓶颈的AI创新(上)

随着人工智能技术的快速发展,多模态模型成为了当前研究的热点。多模态模型的核心思想是能够同时处理和理解来自不同模态(如文本、图像、音频等)的数据,从而为模型提供更加全面的语境理解和更强的泛化能力。 杨新宇,卡…

OpenCV 高斯模糊降噪

# 高斯模糊处理(降噪) # 参数1: 原始图像 # 参数2: 高斯核尺寸(宽,高,必须为正奇数) # 其他模糊方法: # - cv.blur(): 均值模糊 # - cv.medianBlur(): 中值模糊 # - cv.bilateralFilter(): 双边滤波 blur cv.GaussianBlur(img, (7,7), cv…

常见通信协议详解:TCP、UDP、HTTP/HTTPS、WebSocket 与 RPC

在现代网络通信中,各种协议扮演着至关重要的角色,它们决定了数据如何在网络中传输、控制其可靠性、实时性与适用场景。对于开发者而言,理解这些常见的通信协议,不仅有助于更好地设计系统架构,还能在面对不同业务需求时…

深入解析MPLS网络中的路由器角色

一、 MPLS概述:标签交换的艺术 在深入角色之前,我们首先要理解MPLS的核心思想。传统IP路由是逐跳进行的,每一台路由器都需要对数据包的目的IP地址进行复杂的路由表查找(最长匹配原则),这在网络核心层会造成…

AI的拜师学艺,模型蒸馏技术

AI的拜师学艺,模型蒸馏技术什么是模型蒸馏,模型蒸馏是一种高效的模型压缩与知识转移方法,通过将大型教师模型的知识精炼至小型学生模型,让学生模型模仿教师模型的行为和内化其知识,在保持模型性能的同时降低资源消耗。…

Python爬虫从入门到精通(理论与实践)

目录 1. 爬虫的魅力:从好奇心到数据宝藏 1.1 爬虫的基本流程 1.2 准备你的工具箱 2. 第一个爬虫:抓取网页标题和链接 2.1 代码实战:用requests和BeautifulSoup 2.2 代码解析 2.3 遇到问题怎么办? 3. 进阶爬取:结构化数据抓取 3.1 分析网页结构 3.2 代码实战:抓取…

【DDIA】第三部分:衍生数据

1. 章节介绍 本章节是《设计数据密集型应用》的第三部分,聚焦于多数据系统集成问题。前两部分探讨了分布式数据库的基础内容,但假设应用仅用一种数据库,而现实中大型应用常需组合多种数据组件。本部分旨在研究不同数据系统集成时的问题&#…