【问题标题】:Creating a sprite sheet from existing sprite sheets while game is running?在游戏运行时从现有的精灵表创建精灵表?
【发布时间】:2012-10-03 08:12:20
【问题描述】:

我一直在用 XNA 制作一个 2D 游戏,它会有几个独特的敌人。我可以毫不费力地在屏幕上绘制单独的精灵,一个在另一个上以使两个敌人不一样,但我认为如果不是为每个敌人绘制十几个精灵,我会以某种方式将这些精灵合并到一个精灵表中,这样可能会更有效。

如果我在屏幕上有很多这样的敌人,如果我进行合并,我会显着提高性能吗?有没有一种简单的方法可以让我以这种方式创建新的精灵表,或者答案是否相当复杂?

【问题讨论】:

  • 这可能不是值得优化的 - 除非您已经测量并确定了性能瓶颈。这是大量的工作,却收获甚微。批次中的单个精灵非常便宜(如果您避免使用精灵表更改纹理 - more info)。
  • 为了我自己的澄清,您是否要求在运行时动态创建精灵表?为什么不在编译之前创建精灵表并将其作为正常内容管道的一部分加载?

标签: c# xna sprite


【解决方案1】:

绘制一个精灵比绘制多个精灵更快。但是,如果您有性能问题,我只会推荐这个。使用SpriteBatch 绘制精灵非常快。它具有将相同纹理的绘制调用分组的好功能,这使得它非常快。如果为每个敌人创建单独的纹理,则可能会失去此功能,这可能会导致性能损失。创建一个大的精灵表会更好,如果表不会变得太大。

要创建这样的工作表,您必须创建纹理/渲染目标并对其进行渲染。 Here 是如何使用 XNA 实现的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 2015-05-10
    • 2017-01-07
    • 2017-09-13
    • 2023-03-21
    相关资源
    最近更新 更多