如果您不打算在Xbox / Windows手机上发布,使用XNA进行二维开发有没有特别的好处?

我一直在使用XNA来修补2D游戏的开发,但是当我只是针对PC时,我不禁感到内容管道的限制。 像没有vector字体或直接使用graphics文件的东西使它很痛苦,而其他框架做这些事情没有问题。 我喜欢XNA,因为它非常强大,并且有很多支持,但是如果有什么特别的好处,我将专门为PC开发呢?

你所抱怨的一切已经被XNA社区解决了,或者实际上得到了图书馆的支持。

vector字体感谢Nuclex框架

另外,从stream中加载Texture2D也被构建到库中。 如果要使用预加倍alpha(默认XNA混合模式)和stream加载纹理,请使用下面的函数。

static public void PreMultiplyAlpha(this Texture2D texture) { //Setup a render target to hold our final texture which will have premulitplied color values var result = new RenderTarget2D(texture.GraphicsDevice, texture.Width, texture.Height); texture.GraphicsDevice.SetRenderTarget(result); texture.GraphicsDevice.Clear(Color.Black); // Using default blending function // (source × Blend.SourceAlpha) + (destination × Blend.InvSourceAlpha) // Destination is zero so the reduces to // (source × Blend.SourceAlpha) // So this multiplies our color values by the alpha value and draws it to the RenderTarget var blendColor = new BlendState { ColorWriteChannels = ColorWriteChannels.Red | ColorWriteChannels.Green | ColorWriteChannels.Blue, AlphaDestinationBlend = Blend.Zero, ColorDestinationBlend = Blend.Zero, AlphaSourceBlend = Blend.SourceAlpha, ColorSourceBlend = Blend.SourceAlpha }; var spriteBatch = new SpriteBatch(texture.GraphicsDevice); spriteBatch.Begin(SpriteSortMode.Immediate, blendColor); spriteBatch.Draw(texture, texture.Bounds, Color.White); spriteBatch.End(); // Simply copy over the alpha channel var blendAlpha = new BlendState { ColorWriteChannels = ColorWriteChannels.Alpha, AlphaDestinationBlend = Blend.Zero, ColorDestinationBlend = Blend.Zero, AlphaSourceBlend = Blend.One, ColorSourceBlend = Blend.One }; spriteBatch.Begin(SpriteSortMode.Immediate, blendAlpha); spriteBatch.Draw(texture, texture.Bounds, Color.White); spriteBatch.End(); texture.GraphicsDevice.SetRenderTarget(null); var t = new Color[result.Width * result.Height]; result.GetData(t); texture.SetData(t); } 

如果您不打算在Xbox / Windows手机上发布,使用XNA进行二维开发有没有特别的好处?

反正你的主要问题是没有意义的。 为什么PC开发人员具有“特定的好处”是一个理想的特质? 该库使2Dgraphics在所有支持的平台上变得非常简单。 所以,不,成为PC独家开发者没有任何好处。