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 に答える