BANXの日記

ゲームとか、たまにプログラムとか。

XNA メモ

XMLシリアライズで悩んだことと解決方法、ここ数日のまとめ
インスタンスシリアライズして保持するにはXNAに用意された下記メソッドが楽
 ただしXbox360では使用できない
 IntermediateSerializer.Serialize()
・再帰的なインスタンスを含む場合、そのままシリアライズすると無限ループでエラーとなる。
 再帰的なメンバに[ContentSerializer( SharedResource = true )]の属性を指定することで
 シリアライズが可能となる。
シリアライズした自作クラスをContent.Load()でデシリアライズするには、
 プロジェクト→Content→参照設定
 に、使用するクラスを含むDLLの参照を追加してやると
 それ以外のコーディングなどは特に無しでデシリアライズできるようになる。
 (XNA 2.0では読み込み用コード作成の必要もあった)
・上記のシリアライズ方法で作成したXMLは、プロジェクトのビルド時にコンパイルされるため
 XMLを差し替えるだけでは変更が反映されない。
 プロジェクトの再ビルドが必要。
 ビルドをせずにXMLが変更される場合はXmlReaderなどで読み込む。