我正在使用 XNA 构建游戏,并且我的游戏关卡有自定义文件格式。我想自己加载并解析它们,而不使用 XNA 的内容管道。我有这么多工作,通过将文件添加到内容项目中,我什至可以在 Visual Studio 中编辑它们(我也想要)。
问题:我收到一条警告,指出“项目项 'item.lvl' 不是使用 XNA 框架内容管道构建的。将其构建操作属性设置为编译以构建它。”
我不希望 XNA 编译它,因为我正在做自己的解析。如何禁用警告?
将文件的 Build Action 设置为None
,然后将其设置为Copy if newer
. 这将导致文件被写入正确的输出目录,而无需通过内容管道。
该解决方案可以创建一个自定义内容导入器,如下所述:创建自定义导入器和处理器。要创建一个简单的内容导入器,您必须从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));
}
}