Articles of xna content pipeline

XNA中的ContentManager无法find任何XML

我在XNA 4做游戏,这是我第一次使用Content loader初始化一个XML文件的简单类,但不管我遵循多less指南,或者我的XML文件ContentManager是多么简单或复杂找不到文件; debugging不断告诉我:“在Microsoft.Xna.Framework.dll中发生types'Microsoft.Xna.Framework.Content.ContentLoadException'的第一次机会exception”。 我真的很困惑,因为我可以加载SpriteFonts和Texture2D没有问题… 我创建了以下XML(最基本的Xna XML): <?xml version="1.0" encoding="utf-8" ?> <XnaContent> <Asset Type="System.String">Hello</Asset> </XnaContent> 我尝试在我的主类的LoadContent方法中加载它,如下所示: System.String hello = Content.Load<System.String>("NewXmlFile"); 有什么我做错了? 我非常感谢你的帮助

Spine的XNA运行时是否缺less导入程序?

我正在写一个XNA 4.0游戏,并使用Spine进行animation制作。 到现在为止,我一直在用Spine制作spritesheet,并使用它们来定制一个animation类。 我最近发现XNA有一个官方的Spine运行时。 我一直在尝试使用它,但遇到一个错误。 最近我来了(将运行时类添加到我的项目后)是这样的错误: 无法自动检测哪个导入器用于“data \ goblins.atlas”。 没有import商处理这种文件types。 指定在您的项目中处理此文件types的导入程序。 运行时是否有这样一个导入程序,我只是错过了它? 如果是这样,我怎么能让XNA认出它? 如果没有,有没有其他的select?

XNA游戏发布通过在运行时构建的内容来帮助解决不兼容的问题

我的XNA游戏终于完成了,但我很难让它在其他Windows电脑上运行。 我在这里和这里阅读了类似的其他stackexchange主题,但我仍然需要帮助我的特定程序的细节。 我在Windows 7 Professional 64位机器上的Visual Studio 2010中使用XNA 4.0。 游戏是用C#完成的。 我已经在我的机器上发布版本,他们工作得很好。 我不关心Windows XP或Windows Vista。 我只针对Windows 7和Windows 8,32和64位。 我无法让我的游戏正常运行。 游戏始终在启动时崩溃,无论是默默地或崩溃的消息。 所以我发现ClickOnce发布者/安装程序会确保先决条件(比如.Net 4.0和XNA Redistributable)被放到目标机器上。 然而,我发现微软在这里说:“另外,XNA Framework可再发行组件文件不包含内容管道构建运行时。只有在基于Windows的开发计算机上安装了XNA Game Studio时,运行时构建内容才受支持。 这导致了一个问题。 我很确定我的游戏实际上是在运行时建立内容,因为只有一个音乐资源在不同的时间加载不同的音乐文件。 这是代码。 public void scr_play_song(byte s) { if (SEI_MSC != null) SEI_MSC.Stop(); if (s == 1) { System.IO.FileStream fs = new System.IO.FileStream(@"Music\msc01_Legend.wav", System.IO.FileMode.Open); TG.MUSIC = SoundEffect.FromStream(fs); // TG.MUSIC […]

XNA中的WriteObject <T>与现有的ContentWriter

我有相当多的自定义内容管道组件,我只是想知道,在做魔术的时候,XNA是否知道这些东西… 这是我的情况。 我有animation对象,基本上包含2Danimation帧和时间等,可以作为自包含对象加载或可以embedded到其他对象。 现在我期待着我的CustomObjectAWriter可以包含一个实例给AnimationObjectAWriter,并且在内部只需调用它来写出每个animation对象,即: <SomeCustomObjectA> <SomeCustomElementA> … </SomeCustomElementA> <SomeCustomElementB> … <AnimationObjectA> … </AnimationObjectA> </SomeCustomElementB> </SomeCustomObjectA> 但是,由于AnimationObjectAWriter的Write方法受保护,我无法访问它,但是我想知道如果WriteObject会知道AnimationObjectAWriter,所以如果我做了WriteObject<AnimationObjectA>(animationObjectAInstance)这个工作吗?

如何使用TiledLib的Demo实现获取地图透明度颜色?

所以我遇到的问题是,当使用Nick Gravelyn的tiledlib管道在XNA中读取和绘制tmx地图时,我在Tiled的编辑器中设置的透明色将在编辑器中工作,但是当我绘制它应该变成透明的颜色仍然吸引。 最接近我find的解决scheme是 – 1)改变我的精灵批次的BlendState为NonPremultiplied(发现在一个潜伏的鸣叫)。 2)获取应该是透明的像素,然后设置它们全部透明。 解决scheme1没有为我工作,解决scheme2似乎hacky,并不是一个很好的方法来解决这个问题,特别是因为它看起来像自定义管道处理器读取透明颜色,并将其设置为透明颜色键到代码中,只是某处出了问题。 至less这就是代码正在做的事情。 TileSetContent.cs if (imageNode.Attributes["trans"] != null) { string color = imageNode.Attributes["trans"].Value; string r = color.Substring(0, 2); string g = color.Substring(2, 2); string b = color.Substring(4, 2); this.ColorKey = new Color((byte)Convert.ToInt32(r, 16), (byte)Convert.ToInt32(g, 16), (byte)Convert.ToInt32(b, 16)); } … TiledHelpers.cs // build the asset as an external reference OpaqueDataDictionary data […]

为什么spritebatch.Draw显示空白输出?

在我的代码下面,我认为这是正确的完成。 但idk,_bg所调用的图像并没有显示出来。 屏幕只显示白色。 奇怪的是,当我运行它时有0错误消息。 (RenderTarget2D用于默认我的视图进入横向模式) using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; namespace GameName2 { /// <summary> /// This is the main type for your game /// </summary> public class Game1 : Game { GraphicsDeviceManager _graphics; SpriteBatch _spriteBatch; Texture2D _bg; public Game1() { _graphics = new GraphicsDeviceManager(this); Content.RootDirectory = "Content"; } /// <summary> /// Allows the game to […]

有没有办法使用ContentManager完整的目录path

所以我想找出一个方法来使用完整的目录path的ContentManager.Load方法,所以可以说 Content.Load<T>(@"Images\SomeImage"); 变 Content.Load<T>(@"C:\Users\UserName\Documents\Visual Studio 2013\Projects\MyProject\Content\SomeImage"); 提前致谢。

我如何确保自定义XNA内容处理器find包含相对path的文件?

MSDN有一个自定义HLSL效果导入器和处理器的例子 。 这是import商的代码: public override PSSourceCode Import(string filename, ContentImporterContext context) { string sourceCode = System.IO.File.ReadAllText(filename); return new PSSourceCode(sourceCode, System.IO.Path.GetFileNameWithoutExtension(filename)); } 在处理器中他们这样做: EffectContent effectSource = new EffectContent(); effectSource.EffectCode = input.SourceCode; EffectProcessor processor = new EffectProcessor(); compiledEffect = processor.Process(effectSource, context); 该示例工作正常,但是,当您尝试导入并处理具有#include "otherEffect.fx"指令的效果文件时,构建过程会引发错误“无法打开源文件otherEffect.fx”。 我认为这是因为该文件的相对path没有正确指定,但我不知道在哪里指定它。 有没有人知道这个?

XNA 4.0 – 使用预制的.xnb字体文件

基本上,对于我们大学的项目,我们需要在xna中使用一个字体。 唯一的问题是,由于管理员权限,我们不允许安装它。 是否可以使用和加载作为字体创建的.xnb文件。 使用spritefont会在窗口中search字体时出错。 (.xnb文件将在个人计算机上预先创建。)

MonoGame内容管道错误:纹理导入器错误

我在使用MonoGame内容管道时遇到了这种错误,这是我第一次使用它将png转换为xnb文件(过去我使用独立的应用程序将文件转换为xnb)。 我已经完成了构建spritefonts到xnb文件和类似我以前的MonoGame项目中的东西,我认为这将是相似的,但事实certificate,情况并非如此。 所以这是我有的错误: error: Importer 'TextureImporter' had unexpected failure! System.NullReferenceException: Object reference not set to an instance of an object at Microsoft.Xna.Framework.Content.Pipeline.TextureImporter.Import (System.String filename, Microsoft.Xna.Framework.Content.Pipeline.ContentImporterContext context) [0x00000] in <filename unknown>:0 at Microsoft.Xna.Framework.Content.Pipeline.ContentImporter`1[Microsoft.Xna.Framework.Content.Pipeline.Graphics.TextureContent].Microsoft.Xna.Framework.Content.Pipeline.IContentImporter.Import (System.String filename, Microsoft.Xna.Framework.Content.Pipeline.ContentImporterContext context) [0x00000] in <filename unknown>:0 at MonoGame.Framework.Content.Pipeline.Builder.PipelineManager.ProcessContent (MonoGame.Framework.Content.Pipeline.Builder.PipelineBuildEvent pipelineEvent) [0x00000] in <filename unknown>:0 有没有办法解决这个问题? 有没有一个教程,我可以遵循使用TextureImporter和我还没有在MonoGame的内容管道中理解的东西,深入的解释呢?