XNA で作成しているゲームにデータをインポートするために使用したいクラスがあります。その根拠は、私は周りを見回していくつかのことを試しましたが、これを適切にコンパイルすることができません:
<?xml version="1.0" encoding="utf-8" ?>
<XnaContent>
<Asset Type="MyGameData.LevelXMLData">
<LevelID>1</LevelID>
<Path>
<Item>1379 541</Item>
<Item>1370 445</Item>
<Item>1340 348</Item>
<Item>1294 253</Item>
<Item>1217 148</Item>
<Item>1139 106</Item>
<Item>1077 148</Item>
<Item>1046 201</Item>
<Item>1004 479</Item>
<Item>999 633</Item>
<Item>961 816</Item>
<Item>917 918</Item>
<Item>850 964</Item>
<Item>824 939</Item>
<Item>770 837</Item>
<Item>738 673</Item>
<Item>725 526</Item>
<Item>549 520</Item>
</Path>
<WaveIDs>
<Item>Wave1</Item>
<Item>Wave2</Item>
<Item>Wave3</Item>
</WaveIDs>
<WaveInterval>120000</WaveInterval>
<TowerBuildSpots>
<Item>1277 417 50 50</Item>
<Item>1094 232 50 50</Item>
<Item>956 207 50 50</Item>
<Item>931 326 50 50</Item>
<Item>1069 442 50 50</Item>
<Item>906 566 50 50</Item>
<Item>1056 589 50 50</Item>
<Item>1031 722 50 50</Item>
<Item>981 867 50 50</Item>
<Item>824 854 50 50</Item>
<Item>641 747 50 50</Item>
<Item>774 639 50 50</Item>
<Item>641 566 50 50</Item>
<Item>691 442 50 50</Item>
</TowerBuildSpots>
</Asset>
</XnaContent>
「Path」は Vector2 の配列で、「TowerBuildSpots」は Rectangle の配列です。
Public Vector2[] Path;
Public Rectangle[] TowerBuildSpots;
コレクションで見た他の人のコード例に従い、パスタグ内でタグを使用しましたが、コードをコンパイルしようとすると常に次のエラーが発生します
Error 1 There was an error while deserializing intermediate XML. 'Element' is an invalid XmlNodeType. Line 6, position 6.
この行は、ファイルの最初の行です。
誰かこの問題についての洞察を追加してください。それは大いに役立つでしょう。ありがとうございました!
アラスデア
編集:私の逆シリアル化コードは次のとおりです:
public static LevelInfo Load(LevelXMLData data, ContentManager content)
{
int levelID = data.LevelID;
string levelLocation = "Levels\\Level" + levelID + "\\";
Waypoint[] path = new Waypoint[data.Path.Count()];
WaveOfEnemies[] waves = new WaveOfEnemies[data.WaveIDs.Count()];
TextureManager[] images = LevelImageInfo.Load(content.Load<LevelImageXMLData[]>(levelLocation + "ImageData"), content);
// load waypoints
for (int i = 0; i <= data.Path.Count() - 1; i++)
{
path[i] = new Waypoint(data.Path[i]);
}
for (int i = 0; i <= data.WaveIDs.Count() - 1; i++)
{
waves[i] = LoadWave(content.Load<WaveXMLData>(levelLocation + "Waves\\" + data.WaveIDs[i]));
}
return new LevelInfo(levelID, images, path, waves, data.WaveInterval, data.TowerBuildSpots);
}
そして私の LevelXMLData 構造体はここにあります:
public struct LevelXMLData
{
[ContentSerializer]
public int LevelID;
[ContentSerializer]
public Vector2[] Path;
[ContentSerializer]
public string[] WaveIDs;
[ContentSerializer]
public int WaveInterval;
[ContentSerializer]
public Rectangle[] TowerBuildSpots;
}