私はスプライトシートのデータにxmlファイルを使用しようとしています。私は矩形またはフレームの別のリストを保持するフレームクラスを持っています(フレーム自体、またはそれ以上のフレームのホルダー)。 xmlはフレームのすべての矩形を保持します。 コンテンツプロジェクトにxmlを追加し、Content.load( "xmlname")を使用してロードしました。XNAはcontent.load XMLを使用して常に同じオブジェクトを返しますか?
これは一度使用すると完全に正常に動作します。しかし、同じスプライトシート(したがって同じxmlデータファイル)を共有する2つのオブジェクトを作成すると、これらの2つのオブジェクトが同じフレームにあるときに消滅します。私は多くの不満の後、xmlファイルは常に同じオブジェクトを返すので、フレームを共有するので、一度に1つのフレームしか描画できないことがわかりました。
ここでxmlファイルの短い一部です:
クラスのバージョンダウン剥奪<?xml version="1.0" encoding="utf-8"?>
<rect>0 0 0 0</rect>
<frames>
<Item>
<rect>0 0 0 0</rect>
<frames>
<Item>
<rect>19 27 15 22</rect>
<frames></frames>
<label>DOWN</label>
</Item>
<Item>
<rect>2 27 15 23</rect>
<frames></frames>
<label>DOWN</label>
</Item>
<Item>
<rect>19 27 15 22</rect>
<frames></frames>
<label>DOWN</label>
</Item>
<Item>
<rect>36 27 15 23</rect>
<frames></frames>
<label>DOWN</label>
</Item>
</frames>
<label>DOWN</label>
</Item>
:
public class Frame
{
public Rectangle rect; //means this is an image
private Renderable renderable = null;
private List<Frame> frames;
private Texture2D texture;
private int currentFrame = 0;
使用例:
をxmlを手作業でデシリアライズしようとしましたが、リストのデシリアライズは悪夢です。 私はここで何か間違っていますか?それは同じオブジェクトを返すようにとても奇妙に見える
わかりました。オブジェクトを直列化してデシリアライズしてクローンメソッドを試しました。しかしそれはリストの問題の多くを作り出しました。 あなたのリンクをありがとう、実際にはかなり醜いです。しかし少なくとも私は今のところ進歩を助けることができる何か。 – omgnoseat
私はちょうどカスタムコンテンツマネージャを実装しました。私は何か別の解決策を得るかどうかを見たいと思っていますが、もし私が何も得られなければ、これをawnserとして受け入れます。 ありがとう – omgnoseat