C# 在游戏运行时从现有的精灵表创建精灵表?

C# 在游戏运行时从现有的精灵表创建精灵表?,c#,xna,sprite,C#,Xna,Sprite,我一直在用XNA制作一个2D游戏,它将有几个独特的敌人。我很容易在屏幕上画出不同的精灵,一个在另一个上面,这样就不会有两个敌人是一样的,但是我认为如果不是每个敌人画一打精灵,而是以某种方式将这些精灵合并到一张精灵表中,可能会更有效 如果我在屏幕上有很多这样的敌人,如果我合并,我会提高性能吗?有没有一种简单的方法可以让我用这种方法创建新的精灵图纸,或者答案相当巧妙?绘制一个精灵比绘制几个精灵更快。但是,如果您有性能问题,我只建议您这样做。使用SpriteBatch绘制精灵相当快。它有一个很好的特性

我一直在用XNA制作一个2D游戏,它将有几个独特的敌人。我很容易在屏幕上画出不同的精灵,一个在另一个上面,这样就不会有两个敌人是一样的,但是我认为如果不是每个敌人画一打精灵,而是以某种方式将这些精灵合并到一张精灵表中,可能会更有效


如果我在屏幕上有很多这样的敌人,如果我合并,我会提高性能吗?有没有一种简单的方法可以让我用这种方法创建新的精灵图纸,或者答案相当巧妙?

绘制一个精灵比绘制几个精灵更快。但是,如果您有性能问题,我只建议您这样做。使用SpriteBatch绘制精灵相当快。它有一个很好的特性,可以对相同纹理的绘制调用进行分组,这使得它非常快。如果为每个敌人创建单独的纹理,则可能会失去此功能,从而导致性能损失。如果图纸不太大,创建一个大的精灵图纸可能会更好


要创建这样的图纸,必须创建纹理/渲染目标并对其进行渲染。是如何使用XNA的。

这可能不是一个值得的优化-除非您已经测量并确定了性能瓶颈。这是一件劳而无功的事。如果使用精灵表避免纹理变化,则批处理中的单个精灵相当便宜。为了我自己的澄清,您是否要求在运行时动态创建精灵表?为什么不在编译之前创建sprite工作表,并将其作为普通内容管道的一部分加载?