低調の美國生活

各種疑難雜症

Unity, IAP, 玩家購買後資料的儲存與載入(Save and Load)

x377
10月29日2012年

 

會特說明這件事 主要是因為考量到玩家花錢之後的感受:

  • 因為大部份的Tower Defense遊戲到下一關後所有的金幣會重設 例如每關重新開始都是MoneyInGame=$300
  • 但如果玩家花錢買了代幣MoneyIAP 這部份是不可以跟著新關卡而reset的

內容重點:

  • IAP商品與遊戲機制設計
  • 用PlayerPref.儲存玩家資料




IAP商品與遊戲機制設計

Consumable Product 消耗性IAP商品:例如購買金幣

機制重點為”代幣機制” (Token System): 也就是說玩家僅需購買一定額度的代幣 然後可以使用代幣購買遊戲中的money, HP, Weapons等

進一步說明

  • 遊戲中money每關一開始皆為money=$300, HP都是50
    • 每關重新開始money會重新reset成$300
    • 遊戲關閉後money會重新reset成$300
    • 建立武器是從遊戲中money扣款
    • 扣到零後自動改從money扣款
  • IAP代幣為token
    • 一定要先回到主畫面/過關/死亡才可購買
    • 購買後會立即儲存
    • token餘額會延續到下一關
    • 遊戲關閉後token會繼續先前的餘額
    • *遊戲中途跳出 會Load上次儲存的token 避免不公

用PlayerPrefs.儲存玩家資料/存取遊戲進度

在Unity儲存玩家購買的資料 如已購買的代幣MoneyIAP 是使用PlayerPref.的功能來儲存與載入的 使用範例如下:

PlayerPrefs.是使用字串(String)來儲存(寫入)與載入資料

先將想要儲存的資料變數存入相對應的字串:

  • playerScore是我在遊戲中用來暫存分數的變數 為Int資料型態
  • “Player Score”是用來將最後playerScore中的分數寫入用的字串
  • 因為是Int型態 所以使用PlayerPrefs.SetInt  (其它型態可看這裡)
  • 最後用PlayerPrefs.Save()將資料寫入外部檔案 (自動存在系統資料夾中)

(理論上 只要能進去修改此檔案 就可修改相關資料)

載入資料的方式 如同先前說過是用字串的方來存取 如上圖

並且要寫在Awake()下 讓遊戲開始前將資料載入


發佈於 10月29日2012年