2

私は現在、Windows Phone 7 用の XNA Game Studio 4.0 フレームワークを使用して 2D ゲームを作成しています。ユーザーが保存/読み込みを希望する場合、または再開する場合に、ゲームを廃棄するという問題に取り組んでいる段階になりました。後の時点でゲーム。

私は現在、マップのレンダリングなどにTiledLibライブラリを使用しており、プロジェクトの基礎として画面状態管理の例​​も使用しています (たとえば、正しく廃棄するためのイベントはすべて整っています)。MapTiledLib ライブラリのオブジェクトには、多次元配列 ( [,]) があり、各 内にマップのタイルを格納しますTileLayer。私のマップには が 1 つしかなく、タイルが表示しているものに基づいてソースの場所が異なるTileLayer1 つだけです。各タイルの適切なソース四角形をすべて追跡することが重要です。これにより、編集されたマップがプレーヤーが残した方法で再開できるようになります。Texture2DRectangle

ゲーム画面のトゥームストーンを実現するための最良の方法 (または任意の方法) を見つけようとして、かなり苦労しています。私はシリアライゼーションの経験があまりなく、Windows Phone 7 アプリケーションの廃棄を試みるのはこれが初めてです。通常の XmlSerializer を使用して非ジャグ配列をシリアル化できないことは理解していますが、これを回避する方法はありますか? カスタムシリアライザーはダウンするための良い道ですか? 長所短所?TileLib を使用してゲーム画面をシリアル化した経験のある人はいますか? または、X、Y 座標を持つ 2D マップですか? 廃棄のためにシリアル化するには多すぎるデータはどれくらいですか?

回答とアドバイスをお寄せいただきありがとうございます。

4

1 に答える 1

3

BinaryReaderとを使用して独自のシリアル化ルーチンを作成することをお勧めします。これは、プロセスを完全に制御し、自動XMLシリアル化よりもかなりBinaryWriter高速に、完全に任意のデータをシリアル化できることに基づいています。

もちろん、欠点は、読み取りルーチンと書き込みルーチンを相互に同期し、シリアル化するクラスと同期させる必要があることです。また、コードが変更された場合(シリアル化するためにデータを追加または削除する場合)、シリアル化形式の変更を処理するためのメカニズムが必要になります。

于 2011-06-10T16:11:23.443 に答える