1

我正在使用 XNA 构建游戏,并且我的游戏关卡有自定义文件格式。我想自己加载并解析它们,而不使用 XNA 的内容管道。我有这么多工作,通过将文件添加到内容项目中,我什至可以在 Visual Studio 中编辑它们(我也想要)。

问题:我收到一条警告,指出“项目项 'item.lvl' 不是使用 XNA 框架内容管道构建的。将其构建操作属性设置为编译以构建它。”

我不希望 XNA 编译它,因为我正在做自己的解析。如何禁用警告?

4

2 回答 2

4

将文件的 Build Action 设置为None,然后将其设置为Copy if newer. 这将导致文件被写入正确的输出目录,而无需通过内容管道。

于 2013-01-31T21:29:24.993 回答
1

该解决方案可以创建一个自定义内容导入器,如下所述:创建自定义导入器和处理器。要创建一个简单的内容导入器,您必须从ContentImporter<T>(抽象类)继承您的类并覆盖该Import()方法。

下面是一个来自 msdn 的简单示例:

//...
using Microsoft.Xna.Framework.Content.Pipeline;

class PSSourceCode
{
    const string techniqueCode = "{ pass p0 { PixelShader = compile ps_2_0 main(); } }";

    public PSSourceCode(string sourceCode, string techniqueName)
    {
        this.sourceCode = sourceCode + "\ntechnique " + techniqueName + techniqueCode;
    }

    private string sourceCode;
    public string SourceCode { get { return sourceCode; } }
}

[ContentImporter(".psh", DefaultProcessor = "PSProcessor", DisplayName = "Pixel Shader Importer")]
class PSImporter : ContentImporter<PSSourceCode>
{
    public override PSSourceCode Import(string filename, 
        ContentImporterContext context)
    {
        string sourceCode = System.IO.File.ReadAllText(filename);
        return new PSSourceCode(sourceCode, System.IO.Path.GetFileNameWithoutExtension(filename));
    }
}
于 2013-01-31T21:00:34.860 回答