###### tags: `Unity 存檔` # PlayerPrefs [toc] # ------------------------------------------- # 使用方法 ## 整數 - 儲存PlayerPrefs ```csharp= PlayerPrefs.SetInt("Key",value); ``` - 讀取PlayerPrefs ```csharp= PlayerPrefs.GetInt("Key"); ``` ## 浮點數 - 儲存PlayerPrefs ```csharp= PlayerPrefs.SetFloat("Key",value); ``` - 讀取PlayerPrefs ```csharp= PlayerPrefs.GetFloat("Key"); ``` ## 字串 - 儲存PlayerPrefs ```csharp= PlayerPrefs.SetString("Key",value); ``` - 讀取PlayerPrefs ```csharp= PlayerPrefs.GetString("Key"); ``` --- ## 其他函式 - 刪除全部key ```csharp= PlayerPrefs.DeleteAll(); ``` - 刪除key的名子 ```csharp= PlayerPrefs.DeleteKey("Key_name"); ``` - 查看此KEY是否存在 **回傳bool值** ```csharp= PlayerPrefs.HasKey("Key_name"); ``` --- ## 測試兩個不同Scene使用PlayerPrefs 建立兩個Scene,**Scene1的程式碼可以儲存PlayerPrefs**,**Scene2的程式碼可以讀取PlayerPrefs**。 程式碼 :point_down: - 將PlayerPrefs的key設為「Test」,值為「Hello!」 ![](https://i.imgur.com/tSTLAIL.png) - 讀取PlayerPrefs的key時,則直接將參數放key的名稱即可 該程式會輸出PlayerPrefs的值 ![](https://i.imgur.com/ske77ki.png) 當我先執行Scene2,還未執行Scene1,可從輸出得知還未有任何的PlayerPrefs被儲存 ![](https://i.imgur.com/KWM9bIv.png) 而當我執行Scene1後在執行Scene2就可以讀到PlayerPrefs。 在Scene1執行時儲存PlayerPrefs,Scene2執行時才能讀取值。 ![](https://i.imgur.com/rpK6psZ.png) --- # ------------------------------------------- # 儲存位置 ## 在儲存PlayerPrefs後,重新打開專案並執行Scene2 驚人的事情發生了! 即使沒有先執行Scene1來儲存PlayerPrefs,PlayerPrefs的值仍然存在! 這是因為PlayerPrefs被存在本地端電腦的檔案裡了。 ## PlayerPrefs儲存在電腦的位置 > 你可以透過 Cmd (命令提示字元),然後打上 regedit 後找到它(登錄編輯程式)。 > 存在兩個位置,一個是 >`電腦\HKEY_CURRENT_USER\Software\Unity\UnityEditor\DefaultCompany\ProjectName` > > ==這個是你平常用 Editor 上測試時,會寫入的地方。== > > 另一個是 `電腦\HKEY_CURRENT_USER\Software\DefaultCompany\ProjectName` > > ==這個是你玩這個遊戲,或別人玩你的遊戲,會存在他電腦的地方== > > [name=KK] > [資料來源:PlayerPrefs - Unity 內建簡易存檔機制](https://home.gamer.com.tw/creationDetail.php?sn=4790322) 如果打不開的話也可以打開「執行」 ![](https://i.imgur.com/wyu6aaM.png) 打上regedit即可打開。 ![](https://i.imgur.com/wiFCsUQ.png) ![](https://i.imgur.com/tfFRzSw.png) 可看到PlayerPrefs被儲存到此處,且確實是我們在程式碼撰寫的內容 ![](https://i.imgur.com/nwGrBVB.png) 當然我們也可以把這個檔案刪除,在執行Scene2會發現輸出變成 ![](https://i.imgur.com/xaJkHbA.png) ---