首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XNA 4和外部引用

XNA 4和外部引用
EN

Stack Overflow用户
提问于 2011-02-26 13:52:20
回答 2查看 1.5K关注 0票数 2

我试图在博客上实现类似于外部参考示例的东西。

http://blogs.msdn.com/b/shawnhar/archive/2008/08/12/everything-you-ever-wanted-to-know-about-intermediateserializer.aspx

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

构建内容抛出的"C:\Work\Company\Project\trunk\Project.Content\Sprites\Effects\EffectsSprite.tga“:外部引用ArgumentException不是已编译的.xnb文件。(在Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ContentWriter.WriteExternalReferenceT at Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ExternalReferenceWriter1.Write(ContentWriter output, ExternalReference1 value) at Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ContentTypeWriter1.Write(ContentWriter output, Object value) at Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ContentWriter.InvokeWriter[T](T value, ContentTypeWriter writer) at Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ContentWriter.WriteObject[T](T value) at Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ContentWriter.WriteSharedResources() at Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ContentWriter.FlushOutput() at Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ContentCompiler.Compile(Stream output, Object value, TargetPlatform targetPlatform, GraphicsProfile targetProfile, Boolean compressContent, String rootDirectory, String referenceRelocationPath) at Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.SerializeOutputAsset(BuildItem item, Object assetData, String outputFilename) at Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.SerializeAsset(BuildItem item, Object assetData) at Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.BuildAssetWorker(BuildItem item) at Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.BuildAsset(BuildItem item) at Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.RunTheBuild() at Microsoft.Xna.Framework.Content.Pipeline.Tasks.BuildContent.RemoteProxy.RunTheBuild(BuildCoordinatorSettings settings, TimestampCache timestampCache, ITaskItem[] sourceAssets, String[]& outputContent, String[]& rebuiltContent, String[]& intermediates, Dictionary2& dependencyTimestamps,KeyValuePair`2`2[]& warnings) C:\Work\Company\Project\trunk\Project.Content\Sprites\Effects\AtlasAuto.xml项目

我该如何处理Xml文件引用的文件?考虑到它与xml文件位于同一个文件夹中,我尝试:

  1. 包含在内容项目中并使用织构- XNA框架进行处理,
  2. 将其排除在项目之外,
  3. 不构建文件,而只是将其复制为内容.

似乎什么都起不到作用。我想知道这个例子是否在XNA4中有效,或者是否适用于XNA3,他们改变了XNA4上的工作方式.

知道吗?

EN

回答 2

Stack Overflow用户

发布于 2012-01-17 05:22:47

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

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

在这里引用(在第二篇文章中):http://forums.create.msdn.com/forums/t/44917.aspx

票数 0
EN

Stack Overflow用户

发布于 2013-10-15 19:38:30

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

  1. 确保所引用的项也包含在内容项目中。
  2. 不包括其名称中的文件扩展名。
  3. 它的路径应该相对于xml文件的位置(我不能百分之百确定,如果没有找到它也尝试相对于内容项目的根)。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5127265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档