0

所以我在将我的游戏转换为 XML/Linq 时遇到了麻烦,我需要这样做,因为项目已经扩展。这似乎是一个简单的问题,但是我加载到我的内容中的 XML 文件却没有找到。如果我尝试从目录加载 XML 文件,它可以正常工作,但是如何从项目中包含的内容文件加载?

我是否需要以某种方式应用 Content.Load 才能访问该文件,或者以不同的方式标记该文件?我目前已将标志设置为内容(未编译),内容导入器是 XML 内容 - XNA 框架,内容处理器 - 无需处理,复制到输出目录 - 始终复制。

谢谢您的帮助。我觉得有点笨,不得不问。我在有问题的行旁边放了 3 z。再次感谢!

class GameObject
{
    public string objectType;
    public string objectID;
    public bool isActive;
}
struct option
{
    public string optionName;
    public string type;
    public string command;
}
class TitleScreen : GameObject
{
    XDocument TitleData;
    public int totalOptions;
    List<option> optionsShared = new List<option>();
    int currentDrawObject;
    public void Init(string TitleID)
    {
        objectType = "TitleScreen";
        objectID = "Title";
        isActive = true;
zzz            TitleData = XDocument.Load("TitleData.xml");   zzz
        var options = 
            from x in TitleData.Descendants("option")
            select new
            {
                type = x.Descendants("otype").First().Value,
                optionName = x.Descendants("oname").First().Value,
                command = x.Descendants("ocommand").First().Value
            };
        foreach (var x in options)
        {
            optionsShared.Add( new option 
            {optionName = x.optionName,
            type = x.type,
            command = x.command
            });
        }
        foreach (var option in options)
        {
            totalOptions += 1;
        }
    }
    public void Draw(SpriteBatch sb, SpriteFont sf)
    {
        currentDrawObject = 0;
        sb.Begin();
        foreach (var option in optionsShared)
        {
            currentDrawObject += 1;
            sb.DrawString(sf, option.optionName, new Vector2(50, 100 * currentDrawObject), Color.White);
        }
        sb.End();
    }

}
4

2 回答 2

2

您必须将您的 xml 文件“TitleData.xml”标记为内容并始终复制。

如果您在输出中的特定文件夹中设置此 xml,请小心,您将必须指定路径

TitleData = XDocument.Load(@"yourfolder\TitleData.xml");

在调试模式下,您可以看到设置断点应用程序路径以了解如何获得好的路径

于 2012-08-27T19:21:33.180 回答
2

你需要做这样的事情

 XmlDocument xdoc = new XmlDocument();
 xdoc.Load(Environment.CurrentDirectory + "\\TitleData.xml");

Environment.CurrentDirectory给出项目的位置。如果文件在同一个项目文件夹中,您可以使用它。

于 2012-08-27T19:23:00.403 回答