Phaser是否将可见集的精灵渲染为false?

时间:2016-06-17 09:10:16

标签: javascript phaser-framework

Phaser是否将可见设置的精灵渲染为假?

我制作的游戏很像Motherload,但地形无限。地形随着你的进展生成,并由64x64大小的精灵(瓷砖)组成,你可以想象当你沿着很多精灵添加到场景中。超出视野的精灵将其可见属性设置为false,但是当玩家进行并且生成很多地形时,我的帧速率(FPS)显着下降。为什么只有屏幕上的精灵将其visible属性设置为true?我一遍又一遍地检查过,只有屏幕上的精灵将其可见属性设置为true,并且不明白为什么我的FPS下降得那么多,Phaser仍然将这些精灵渲染为可见设置为假?

1 个答案:

答案 0 :(得分:1)

不是不断创建新Sprite然后.kill(),而是应该回收Sprites。

以下是Recycling.

的示例

它与粒子效果中使用的技术相同(因此,如果粒子生成器运行无穷大,它只会创建有限数量的粒子)

以下是使用步骤:

  1. Phaser.Group
  2. 中创建多个精灵(可能是屏幕大小的2倍)
  3. 渲染每个精灵的初始场景(位置,图像)
  4. 当精灵移出屏幕时(使用sprite.inCamera检入update),然后.kill()
  5. 如果需要在屏幕上绘制新的精灵,请使用getFirstExists(false)获取重复使用的精灵
  6. 更新精灵的图像和位置
  7. 告诉游戏使用.revive()
  8. 渲染精灵

    瞧!您会看到性能大幅提升。 (特别是如果您之前尝试创建1,000个精灵)