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.
上的示例
这与粒子效果中使用的技术相同(因此,如果粒子生成器无限运行,它只会创建有限数量的粒子)
使用步骤如下:
- 在
Phaser.Group
中创建多个精灵(可能是屏幕大小的 2 倍)
- 为每个精灵渲染初始场景(位置、图像)
- 随着精灵移出屏幕(使用
sprite.inCamera
签入 update
)然后 .kill()
它。
- 当需要在屏幕上绘制新的精灵时,使用
getFirstExists(false)
获得一个 不可见. 的重复使用的精灵
- 更新精灵的图像和位置
- 告诉游戏使用
.revive()
渲染精灵
瞧!你会看到巨大的性能提升。 (特别是如果您之前尝试创建 1,000 个精灵)
Phaser 是否渲染 visible 设置为 false 的精灵?
我正在制作一款与 Motherload 非常相似但地形无限的游戏。地形随着您的前进而生成,由 64x64 大小的精灵(瓷砖)组成,正如您可以想象的那样,随着您的前进,场景中添加了很多精灵。离开视野的精灵将其可见 属性 设置为 false,但随着玩家前进并生成大量地形,我的帧速率 (FPS) 会大幅下降。为什么只有屏幕上的精灵将其可见 属性 设置为 true?我一遍又一遍地检查只有屏幕上的精灵将它们的可见 属性 设置为 true 并且不明白为什么我的 FPS 随着我的进行而下降这么多,Phaser 是否仍在渲染这些精灵并将可见设置为假的?
与其不断创建新的 Sprites 然后 .kill()
ing 它们,不如回收 Sprites。
这是 Recycling.
上的示例这与粒子效果中使用的技术相同(因此,如果粒子生成器无限运行,它只会创建有限数量的粒子)
使用步骤如下:
- 在
Phaser.Group
中创建多个精灵(可能是屏幕大小的 2 倍)
- 为每个精灵渲染初始场景(位置、图像)
- 随着精灵移出屏幕(使用
sprite.inCamera
签入update
)然后.kill()
它。 - 当需要在屏幕上绘制新的精灵时,使用
getFirstExists(false)
获得一个 不可见. 的重复使用的精灵
- 更新精灵的图像和位置
- 告诉游戏使用
.revive()
渲染精灵
瞧!你会看到巨大的性能提升。 (特别是如果您之前尝试创建 1,000 个精灵)