2016-06-19 13 views
0

要約すると、前に読み込んだ.xnb XMLファイルにデータを書き込むにはどうすればよいですか?C#XNAのコンパイル済みXNBファイルにXMLを保存するにはどうすればよいですか?


Iました次:私のプロジェクトのコンテンツフォルダに

編集可能なXMLファイル:

<?xml version="1.0" encoding="utf-8" ?> 
<XnaContent> 
    <Asset Type="TestProgram_Data.Data"> 
    <Number>123</Number> 
    </Asset> 
</XnaContent> 

マイデータクラス:

namespace TestProgram_Data 
{ 
    public class Data 
    { 
     public int Number; 
    } 
} 

今、私はこのようなコンパイル済みのXMLファイル(.xnb、XNAコンテンツファイル)からデータをロードすることができます

Data data = new Data(); 
Console.WriteLine("Number: " + data.Number); // Output: "Number: 123" 

しかし、どのように私は、このファイル(コンテンツフォルダの下.xnbファイル)に書き込むことができますか?

data.Number = 123456789; // Doesn't work 

私はIntermediateSerializerとしたXmlWriterを使用しようとしたが、それは通常のXMLファイルを作っています。私はこれでも.xnbファイルを作ることができますが、この場合は.xnbファイルはコンパイルされません(私はメモ帳で編集することができます。私のプロジェクトの一部ではありません。 XmlWriterで作成した他のファイルからではなく、私の.xnbファイルから読み込むため、[123。

私は過去に読んだことから、データを.xnbファイルに保存することは可能ですか?

+0

これらは、実際には、パイプラインでのXMLへの高速読み取り専用アクセスのみを目的としています。レベル設計仕様。実行時にそれらを変更することはありません。そのようなことをしたいのであれば、C#で標準のXml Serialization/Deserializationクラスを使用してください。 – ManoDestra

答えて

1

できません。 XNBは、コンテンツの高速ランタイム読み込みのために設計された読み取り専用フォーマットです。これは、ビルド時にコンテンツパイプラインによってのみ書き込まれます。変更されたデータを別の形式で新しいファイルに書き込む必要があります。

さらに、IntermediateSerializerはコンテンツパイプラインの一部であり、XNA開発ツールにのみ含まれています。エンドユーザーの再配布可能ファイルには含まれません。したがって、新しいファイルを作成するためには使用せず、他のシリアライザを使用してください。

関連する問題