整个错误信息在这里:
There was an error while deserializing intermediate XML. Cannot find type
"WindowsGame1.Tile".
我正在制作 XNA 游戏,现在我正在尝试从 xml 文件加载基于图块的关卡。现在,我的 xml 文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<XnaContent>
<Asset Type="WindowsGame1.Tile">
<Tile>
<X>0</X>
<Y>0</Y>
<ImageName>grass-tile</ImageName>
</Tile>
</Asset>
</XnaContent>
我的 C# 文件如下所示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
namespace WindowsGame1
{
public class Tile
{
public int x;
public int y;
public string imageName;
public int X
{
get { return x; }
set { x = value; }
}
public int Y
{
get { return y; }
set { y = value; }
}
public string ImageName
{
get { return imageName; }
set { imageName = value; }
}
}
}
我有一个类,它使用 XPath 库来解析 xml 文件并将 Tile 排除在外,但现在它都被注释掉了,因为 xml 的东西无论如何都不起作用。在我的 Game1 课程中,我尝试导入:
using WindowsGame1.Tile;
并参考:
Tile tile;
这个瓷砖类,根据我在尝试找到解决方案时发现的建议,但我仍然遇到同样的错误,我的游戏无法构建。任何人都知道我需要改变什么才能让这些 XML 东西正常工作吗?
下面是解析 XML 的代码应该是什么样子的,尽管目前,在我可以编译之前,它都被注释掉了。
namespace WindowsGame1
{
class ActionScreen : GameScreen
{
public ActionScreen(Game game, SpriteBatch spriteBatch, String file, AnimatedSprite sprite)
: base(game, spriteBatch)
{
this.file = file;
this.sprite = sprite;
initializeTiles();
}
private void initializeTiles()
{
XPathDocument doc = new XPathDocument(file);
XPathNavigator nav = doc.CreateNavigator();
XPathNodeIterator iter = nav.Select("tile");
while (iter.MoveNext())
{
int x, y;
string fileName;
x = int.Parse(iter.Current.GetAttribute("X", ""));
y = int.Parse(iter.Current.GetAttribute("Y", ""));
fileName = iter.Current.GetAttribute("ImageName", "");
Console.WriteLine(x + " " + y + " " + fileName);
}
}
}
}