Unity:PlayerPrefs筆記

寫在前面:

寫本系列(自用)的目的是回顧已經學過的知識、記錄新學習的知識或是記錄心得理解,方便自己以后快速復習,減少遺忘。

一、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. 章節介紹 本章節是《設計數據密集型應用》的第三部分,聚焦于多數據系統集成問題。前兩部分探討了分布式數據庫的基礎內容,但假設應用僅用一種數據庫,而現實中大型應用常需組合多種數據組件。本部分旨在研究不同數據系統集成時的問題&#…