2011-06-10 84 views
2

我目前正在爲使用Windows Phone 7的XNA Game Studio 4.0框架編寫一個2D遊戲。我已經到了我正在處理墓地石頭遊戲問題的階段if用戶想要保存/加載,或者如果他們稍後恢復遊戲。XNA - WP7 - TiledLib - 序列化和墓碑

我目前使用的TiledLib庫地圖的繪製等,也是screen state management例子爲我的項目的基礎(例如,用於正確立碑的事件全部到位)。 TiledLib庫中的Map對象具有多維數組([,]),用於在每個TileLayer內存儲地圖的圖塊。我的地圖只有一個TileLayer,並且只有1 Texture2D不同的Rectangle源位置基於該圖塊顯示的內容。重要的是我要跟蹤每個區塊的所有適當源矩形,以便可以按照玩家離開它的方式恢復已編輯的地圖。

我在試圖找出最佳方式(或任何方式)實現遊戲屏幕的墓碑時遇到了很多麻煩。我沒有太多的序列化經驗,這是我第一次嘗試在Windows Phone 7應用程序中進行墓碑操作。我知道無鋸齒數組無法使用通常的XmlSerializer序列化,有沒有一種方法來解決這個問題?自定義序列化程序是否是一個很好的路徑?優點缺點?有沒有其他人有過使用TileLib並序列化遊戲畫面的經驗?還是一個帶有X,Y座標的2D地圖?有多少數據是太多的數據序列化墓碑?

在此先感謝您的答案和建議。

回答

3

我會建議使用BinaryReaderBinaryWriter編寫自己的序列化程序,你可以完全序列化任意數據,在對過程的完全控制的基礎上,並與比自動XML序列化的速度大大更多。

當然,不利的一面是,你必須保持你的讀寫例程彼此同步,並與你正在序列化的類保持同步。如果您的代碼發生更改(您添加或刪除要序列化的數據),您還需要一種處理序列化格式更改的機制。

+0

感謝您的建議。我開始通過擴展二進制讀取器和編寫器來支持我的類型。我認爲這比改變代碼庫以支持自動序列化器更好。再次感謝。 – 2011-06-11 07:08:06