2011-02-26 138 views
2

我試圖實現對肖恩哈格里夫斯博客相似,外部參照樣本東西XNA 4和外部參考

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

我的問題是,當VS嘗試編譯XML文件,它拋出像

錯誤1,建設內容的​​錯誤拋出的ArgumentException:外部引用 「C:\工作\公司\項目\幹線\ Project.Content \精靈\影響\ EffectsSprite.tga」 不是一個編譯.xnb文件。 at Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ContentWriter.WriteExternalReference [T](ExternalReference 1 reference) at Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ExternalReferenceWriter 1.Write(ContentWriter output,ExternalReference 1 value) at Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ContentTypeWriter)1.在Microsoft.Xna上寫入(ContentWriter輸出,對象值) 。 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) 在Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ContentWriter.FlushOutput() 上的Microsoft.Xna.Framework.Content()上的Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ContentWriter.WriteSharedResources() .Pipeline.Serialization.Compiler.ContentCompiler.Compile(STRE在微軟的Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.SerializeOutputAsset(BuildItem項目,Object assetData,String outputFilename) 上的輸出,對象值,TargetPlatform targetPlatform,GraphicsProfile targetProfile,布爾compressContent,字符串referenceRelocationPath)。 X.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,Timestam PCACHE timestampCache,ITaskItem [] sourceAssets,字符串[] & outputContent,字符串[] & rebuiltContent,字符串[] &中間體,字典2& dependencyTimestamps, KeyValuePair 2 [] &警告)C:\工作\公司\項目\樹幹\ Project.Content \精靈\ Effects \ AtlasAuto.xml項目

我該怎麼處理Xml文件引用的文件?由於它是在同一文件夾中的XML文件, 我曾嘗試:

  1. 包括在內容項目並對其進行處理與紋理 - XNA框架,
  2. 從項目中排除和
  3. 做不建立該文件,而只是將其作爲內容複製...

沒有什麼似乎工作。我不知道這個例子是否在XNA4中起作用,或者它是否用於XNA3,並且它們改變了XNA4的工作方式......

有什麼想法嗎?

回答

0

很難說沒有看到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

我懷疑XML內容中的外部引用不能指向源資產。

  1. 確保被引用的項目也包含在內容項目中。
  2. 不要在其名稱中包含文件擴展名。
  3. 它的路徑應該是相對於xml文件的位置(我不是100%確定的,如果找不到它也嘗試相對於內容項目的根目錄)。