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

Does Phaser render sprites with visible set to false?

Phaser 是否渲染 visible 设置为 false 的精灵?

我正在制作一款与 Motherload 非常相似但地形无限的游戏。地形随着您的前进而生成,由 64x64 大小的精灵(瓷砖)组成,正如您可以想象的那样,随着您的前进,场景中添加了很多精灵。离开视野的精灵将其可见 属性 设置为 false,但随着玩家前进并生成大量地形,我的帧速率 (FPS) 会大幅下降。为什么只有屏幕上的精灵将其可见 属性 设置为 true?我一遍又一遍地检查只有屏幕上的精灵将它们的可见 属性 设置为 true 并且不明白为什么我的 FPS 随着我的进行而下降这么多,Phaser 是否仍在渲染这些精灵并将可见设置为假的?

与其不断创建新的 Sprites 然后 .kill()ing 它们,不如回收 Sprites。

这是 Recycling.

上的示例

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

使用步骤如下:

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

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