2015年5月11日 星期一

【Unity】遊戲存檔功能(PlayerPrefs)

這是要談的是遊戲存檔的功能,前陣子在做自製遊戲時是透過PlayerPrefs來進行存檔讀檔,所以就先從PlayerPrefs談起。
PlayerPrefs可以在應用程式內做資料存取的動作,可存取的資料型態為int、float、string三種類型,以下是存檔語法:
PlayerPrefs.SetInt ("儲存名稱I", 整數變數);
PlayerPrefs.SetFloat ("儲存名稱F", 浮點數變數);
PlayerPrefs.SetString ("儲存名稱S", 字串變數);

存好資料以後,若要讀取資料則是:
整數變數 = PlayerPrefs.GetInt ("儲存名稱I");
浮點數變數 = PlayerPrefs.GetFloat ("儲存名稱F");
字串變數 = PlayerPrefs.GetString ("儲存名稱S");

如果需要清除資料的話:
PlayerPrefs.DeleteAll();
PlayerPrefs.DeleteKey("儲存名稱I");
DeleteAll可以做全部資料的清除,DeleteKey則可以針對個別變數做清除。

如果要做簡單的資料存取的話,PlayerPrefs就非常夠用了。
接著提一些自己再嘗試時遇到的小問題:
首先是PlayerPrefs.Get...這些語法在讀取名稱時沒有先做儲存動作的話,GetInt和SetFloat會抓到0,SetString會抓到空字串,自己在這裡遇到過幾次小麻煩。
另外資料存檔之後會被寫到哪裡,Unity官方自己的頁面中有做說明:
http://docs.unity3d.com/ScriptReference/PlayerPrefs.html

這次就到這裡,晚點會補上簡單的範例小遊戲。

10 則留言:

  1. 存好資料以後,若要讀取資料則是:
    浮點數變數 = PlayerPrefs.SetFloat ("儲存名稱F");
    讀取資料不是SetFloat 是 GetFloat

    字串變數 = PlayerPrefs.SetString ("儲存名稱S");
    讀取資料不是SetString 是 GetString

    回覆刪除
  2. 那如果是換場景 可以儲存圖片的嘛~

    回覆刪除
    回覆
    1. 如果是圖片路徑的字串,我想應該是可以

      刪除
  3. 請問假設我有兩個C#檔,分別放在不同場景但同個專案
    第一個C# 負責存取 ,第二個C# 負責讀檔, 但結果是第一個C#存的變數,第二個C#無法讀取
    請問該如何解決

    回覆刪除
    回覆
    1. 我測是可以 會不會是"儲存名稱"打錯

      刪除
  4. 不好意思,我想請問
    那如果是VR的話,要怎麼做類似記錄存檔之類的
    因為怕在換卡之後,整個東西都會跑掉,謝謝

    回覆刪除
    回覆
    1. VR我不是很清楚耶,請問換卡是?

      刪除
  5. 請問PlayerPrefs會隨Google Play更新遊戲而消失嗎

    回覆刪除
  6. 大大請問一下 如果我是要把手機遊戲資料 回傳到我的桌機該怎麼做呀~~

    回覆刪除

【自製小遊戲】水平思考猜謎(海龜湯)

遊戲連結 海龜湯的玩法是由出題者提出一個難以理解的事件,參與猜題者可以提出任何問題以試圖縮小範圍並找出事件背後真正的原因。但出題者僅能以「是」、「不是」或「沒有關係」來回答問題。 本遊戲蒐集各種論壇、平台的42個題目,提供給想玩海龜湯卻愁找不到題目的你們。 ...