2011-03-15 64 views
2

我正在開發iOS遊戲,我有兩個問題。首先,我將水平信息(分數,背景圖像等)保存到plist文件中。第一次啓動應用程序時,我將plist文件從資源目錄複製到文檔目錄(我需要將用戶最佳分數寫入它)。退出維護此信息的最佳方式?其次,如果我對應用程序進行更新,例如添加新的關卡,如何在不丟失當前用戶分數的情況下添加更新新信息?在iOS上保存用戶遊戲得分

感謝您的閱讀。

回答

2
  1. 屬性列表似乎是跟蹤高分和其他任何其他方式的好方法。如果你已經有這個工作,堅持下去,直到你有一個很好的理由去改變。

  2. 當用戶更新到新版本的應用程序時,您的數據文件(確實是Documents目錄的全部內容)將被保留。

+0

感謝您的回覆如此之快。關於1.,我會按照你的意見,我會繼續使用屬性列表文件。關於2.如果數據文件將被保留,我想我會在介紹更新應用程序的新關卡時唯一要做的就是將當前用戶數據複製到新的屬性列表文件中並更改用戶當前屬性列表文件由更新後的一個。是不是? – 2011-03-15 13:00:47

+1

這聽起來是正確的,但你可能甚至不需要更新現有的文件。我建議使用不同的文件:一個用於用戶信息,如每個級別的最佳分數;一個用於用戶無法更改的事物,例如每個級別的背景圖像。具有不可變的東西的文件可以留在應用程序包中。對於用戶信息,應該爲應用程序內置一些合理的默認值,以存儲不存在的數據。例如,如果您的每個級別都有一本高分的字典,那麼您可能會發現,由於沒有任何價值,您會回零。在這種情況下,假設該級別的分數爲0。 – Caleb 2011-03-15 15:39:18

0

您可能想看看NSUserDefaults類,它提供了存儲應用程序數據的基本管理功能。對於更高級的數據存儲,CoreData是推薦的方法。

+0

感謝您的回覆。我想我會繼續使用屬性列表文件。目前,我有很多代碼工作和使用plist文件。關於CoreData,我不需要數據庫。我沒有足夠的數據量。 – 2011-03-15 13:03:48

+0

核心數據並不一定意味着您需要擁有較高的數據量或數據庫。數據的複雜性可能會使差異更加複雜 - 當您的實體之間存在複雜的關係時,使用Core Data通常更容易。 – 2011-03-15 13:09:18

+0

我知道,但在我的情況下,我沒有複雜的關係。我瞭解Core Data,但在這種情況下,我更喜歡更輕的解決方案。不管怎樣,謝謝你。 – 2011-03-15 16:40:16

1

AS Caleb說,pList文件對於保存高分很可能是好的。

我想補充一點關於#2的內容。只要您提前計劃更新,您就可以始終重複使用相同的保存文件以簡化操作。這比嘗試爲不同版本的不同plist文件更容易。

當您創建您的遊戲保存plist文件時,請確保包含保存遊戲格式版本號的字段。這樣,對於將來的版本,您可以打開保存文件,讀取版本號,並進行必要的調整以使其升級到當前版本。當玩家基本上可以跳過更新,下載版本1和3但跳過2時,這非常方便。

1

我同意迦勒。最好有一個小的源代碼來幫助你。

我創建了this sample code,它既支持本地支持,也支持全局支持。