使用PlayerPrefs保存簡單的遊戲數據
在 Unity 中,PlayerPrefs
是一個簡單而實用的工具,用於保存和讀取遊戲中的小型數據,如玩家的設置、分數和進度。PlayerPrefs
提供了一個輕鬆的方式來儲存這些數據,即使在遊戲重新啟動或關閉後,也能保持數據。
以下是使用 PlayerPrefs
保存簡單遊戲數據的基本步驟:
1. 了解 PlayerPrefs
PlayerPrefs
提供了三種主要的方法來儲存數據:
SetInt(key, value)
:保存整數型數據。SetFloat(key, value)
:保存浮點數型數據。SetString(key, value)
:保存字符串型數據。
相對應的讀取方法是:
GetInt(key, defaultValue)
:讀取整數型數據。GetFloat(key, defaultValue)
:讀取浮點數型數據。GetString(key, defaultValue)
:讀取字符串型數據。
2. 保存數據
步驟 1:創建數據保存腳本
- 創建新腳本
- 在
Assets
資料夾中,右鍵選擇Create > C# Script
,創建一個新的 C# 腳本,命名為DataManager
。
- 在
- 編寫保存數據代碼
- 打開
DataManager
腳本,添加以下代碼來保存數據:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
using UnityEngine; public class DataManager : MonoBehaviour { // 保存玩家分數 public void SaveScore(int score) { PlayerPrefs.SetInt("PlayerScore", score); PlayerPrefs.Save(); // 儲存所有變更 } // 保存玩家名字 public void SavePlayerName(string playerName) { PlayerPrefs.SetString("PlayerName", playerName); PlayerPrefs.Save(); // 儲存所有變更 } // 保存玩家等級 public void SavePlayerLevel(float level) { PlayerPrefs.SetFloat("PlayerLevel", level); PlayerPrefs.Save(); // 儲存所有變更 } }
- 打開
步驟 2:使用數據保存方法
- 附加腳本
- 將
DataManager
腳本附加到場景中的一個物件上(例如一個空的GameObject
)。
- 將
- 調用保存方法
- 可以在遊戲中某個事件(如按鈕點擊)觸發時調用保存方法。例如,在
UIButtonHandler
腳本中添加以下代碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
using UnityEngine; using UnityEngine.UI; public class UIButtonHandler : MonoBehaviour { public DataManager dataManager; public InputField scoreInput; public InputField nameInput; public InputField levelInput; public void OnSaveButtonClick() { int score = int.Parse(scoreInput.text); string playerName = nameInput.text; float playerLevel = float.Parse(levelInput.text); dataManager.SaveScore(score); dataManager.SavePlayerName(playerName); dataManager.SavePlayerLevel(playerLevel); Debug.Log("Data Saved"); } }
- 可以在遊戲中某個事件(如按鈕點擊)觸發時調用保存方法。例如,在
3. 讀取數據
步驟 1:創建數據讀取腳本
- 編寫讀取數據代碼
- 在
DataManager
腳本中添加以下代碼來讀取數據:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
using UnityEngine; public class DataManager : MonoBehaviour { // 讀取玩家分數 public int GetScore() { return PlayerPrefs.GetInt("PlayerScore", 0); // 0 是默認值 } // 讀取玩家名字 public string GetPlayerName() { return PlayerPrefs.GetString("PlayerName", "Unknown"); // "Unknown" 是默認值 } // 讀取玩家等級 public float GetPlayerLevel() { return PlayerPrefs.GetFloat("PlayerLevel", 1.0f); // 1.0f 是默認值 } }
- 在
步驟 2:使用數據讀取方法
- 調用讀取方法
- 可以在遊戲開始時或某個事件觸發時調用讀取方法。例如,在
Start
方法中加載數據:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
using UnityEngine; public class GameStart : MonoBehaviour { public DataManager dataManager; public UnityEngine.UI.Text scoreText; public UnityEngine.UI.Text nameText; public UnityEngine.UI.Text levelText; void Start() { int score = dataManager.GetScore(); string playerName = dataManager.GetPlayerName(); float playerLevel = dataManager.GetPlayerLevel(); scoreText.text = "Score: " + score; nameText.text = "Player Name: " + playerName; levelText.text = "Level: " + playerLevel; Debug.Log("Data Loaded"); } }
- 可以在遊戲開始時或某個事件觸發時調用讀取方法。例如,在
- 附加讀取腳本
- 將
GameStart
腳本附加到場景中的一個物件上,並配置相應的 UI 元素。
- 將
4. 清除數據
如果你需要清除所有的 PlayerPrefs
數據,可以使用以下代碼:
1
PlayerPrefs.DeleteAll();
5. 小結
PlayerPrefs
提供了一個簡單的方法來儲存和讀取小型遊戲數據。它適合用來保存玩家的設置、分數和進度等信息。通過設置數據保存和讀取的腳本,你可以輕鬆地實現遊戲數據的持久化,提升遊戲的用戶體驗。
本文章以 CC BY 4.0 授權