Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XNA 4和外部参考_C#_Xna_Xna 4.0 - Fatal编程技术网

C# XNA 4和外部参考

C# XNA 4和外部参考,c#,xna,xna-4.0,C#,Xna,Xna 4.0,我试图实现类似于Shawn Hargreaves博客上的外部引用示例的东西 我遇到的问题是,当VS试图编译xml文件时,它会抛出一个错误,如 错误1生成内容异常:外部引用“C:\Work\Company\Project\trunk\Project.content\Sprites\Effects\EffectsPrite.tga”不是已编译的.xnb文件。 位于Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.Cont

我试图实现类似于Shawn Hargreaves博客上的外部引用示例的东西

我遇到的问题是,当VS试图编译xml文件时,它会抛出一个错误,如

错误1生成内容异常:外部引用“C:\Work\Company\Project\trunk\Project.content\Sprites\Effects\EffectsPrite.tga”不是已编译的.xnb文件。 位于Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ContentWriter.WriteExternalReference[T](ExternalReference
1参考)
在Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ExternalReferenceWriter中
1.Write(ContentWriter输出,ExternalReference
1值)
位于Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ContentTypeWriter
1.Write(ContentWriter输出,对象值) 在Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ContentWriter.InvokeWriter[T](T值,ContentTypeWriter) 位于Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ContentWriter.WriteObject[T](T值) 在Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ContentWriter.WriteSharedResources()中 在Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ContentWriter.FlushOutput()中 位于Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ContentCompiler.Compile(流输出、对象值、TargetPlatform TargetPlatform、GraphicsProfile targetProfile、布尔压缩内容、字符串根目录、字符串引用位置路径) 位于Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.SerializeOutputAsset(BuildItem项、对象assetData、字符串outputFilename) 位于Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.SerializeAsset(BuildItem项,对象assetData) 位于Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.BuildAssetWorker(BuildItem) 位于Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.BuildAsset(BuildItem项目) 在Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.RunTheBuild()上 在Microsoft.Xna.Framework.Content.Pipeline.Tasks.BuildContent.RemoteProxy.RunTheBuild(BuildCoordinatorSettings设置、TimestampCache TimestampCache、ITaskItem[]sourceAssets、String[]和outputContent、String[]和RebuildContent、String[]和intermediates、Dictionary
2和dependencyTimestamps、KeyValuePair
2[]和warnings)C:\Work\Company\Project\trunk\Project.Content\Sprites\Effects\AtlasAuto.xml项目

我应该如何处理Xml文件引用的文件?假设它与xml文件位于同一文件夹中, 我曾尝试:

  • 包含在内容项目中,并使用Texture-XNA框架进行处理
  • 将其从项目中排除,然后重试
  • 不要构建文件,只需将其复制为内容
  • 似乎什么都不管用。我想知道这个例子在XNA4中是否有效,或者它是否适用于XNA3,他们改变了这个在XNA4上的工作方式


    有什么想法吗?

    如果没有看到XML和项目布局,很难说,但我相信可能是这样的:

    您的方法看起来不错,但问题是您还需要构建此纹理文件。ExternalReference可以指向源文件(如.jpg或.fx),也可以指向已编译的.xnb文件。通常情况下,您希望管道开始处输入的数据指向源文件,但另一端输出的数据需要指向编译后的.xnb文件,以便将这些文件加载到游戏中。 实现这一点最常见的方法是使用自定义处理器,该处理器接收对源资产的引用,要求编译此资产,并更改引用以指向其最终编译版本。例如(在处理器中):
    material.Texture=context.BuildAsset(material.Texture,“TextureProcessor”)

    此处引用(在第二篇文章中):

    不看XML和项目布局很难说,但我相信可能是这样的:

    您的方法看起来不错,但问题是您还需要构建此纹理文件。ExternalReference可以指向源文件(如.jpg或.fx),也可以指向已编译的.xnb文件。通常情况下,您希望管道开始处输入的数据指向源文件,但另一端输出的数据需要指向编译后的.xnb文件,以便将这些文件加载到游戏中。 实现这一点最常见的方法是使用自定义处理器,该处理器接收对源资产的引用,要求编译此资产,并更改引用以指向其最终编译版本。例如(在处理器中):
    material.Texture=context.BuildAsset(material.Texture,“TextureProcessor”)

    此处引用(在第二篇文章中):

    我怀疑xml内容中的外部引用不能指向源资产

  • 确保所引用的项也包含在内容项目中
  • 不要在文件名中包含文件扩展名
  • 它的路径应该是相对于xml文件的位置的(我不是100%确定的,如果没有找到它,也可以尝试相对于内容项目的根)

  • 我怀疑xml内容中的外部引用不能指向源资产

  • 确保所引用的项也包含在内容项目中
  • 不要在文件名中包含文件扩展名
  • 它的路径应该是相对于xml文件的位置的(我不是100%确定的,如果没有找到它,也可以尝试相对于内容项目的根)