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