簡體   English   中英

在XNA中保存級別數據

[英]Saving level data in XNA

我正在用XNA編寫游戲。 第一個主要目標是使其完整並在Windows上運行,但是此后,我將購買360套件並更改我需要更改的所有內容,以使其能夠在360上正常運行。

我目前正在編寫一個關卡編輯器,我將用它來創建關卡,但也要留作用戶功能。 我想知道保存數據的最佳/最常見/最簡單的方法是什么,應該將其保存在哪里?

等級格式

至於保存數據的格式,這取決於您。 如果您可以將水平數據表示為純文本(可能是一系列的行和數字),那就去吧。 許多關卡編輯器使用自定義類/結構或XML表示關卡數據。

准備保存

如果數據是純文本或XML,那么您的工作就很容易,無需做任何准備工作。 如果數據包含在類/結構中,則需要先序列化數據,然后再將其寫出到存儲中。

通過將類轉換為易於寫入存儲的格式,反序列化基本上可以輕松地將數據持久化在類中(反序列化則是另一個方向)。

序列化通常使用XMLSerializer類完成。 對於一個簡單的示例,您可能需要看一下MSN示例 ,在該示例中他們演示了如何保存/加載保存游戲數據。

注意:有些人不喜歡序列化為XML,因為它將數據暴露給窺探者,對於關卡編輯器來說,這可能不是問題,甚至是可取的。

保存數據

最后要考慮的是用於保存數據的方法。 在PC上,您可以使用標准.NET庫將數據寫入任意位置,但是360並非如此。如果您玩了很多360游戲,您將知道每個游戲都會彈出一個對話框,詢問您要使用的存儲設備。 您將需要使用與其他360游戲相同的類和方法,即XNA StorageContainer類。 微軟這里有一些很好的例子,應該可以幫助您。

當您打算將關卡編輯器保留為用戶功能時,建議您使用XNA庫(Guide.BeginShowStorageDeviceSelector,StorageContainer)為PC和360實現關卡數據的保存/加載。這只是為了避免必須為PC和360編寫單獨的保存/加載代碼。

我建議使用Microsoft.Xna.Framework.Storage命名空間 主要優點是,當移植到xbox360時,此方向將起作用,而保存信息的邏輯幾乎沒有變化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM