gpt4 book ai didi

javascript - Phaser 是否渲染可见设置为 false 的 Sprite ?

转载 作者:行者123 更新时间:2023-12-02 14:30:34 25 4
gpt4 key购买 nike

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

我正在制作一款很像 Motherload 的游戏,但地形无限。地形会随着您的前进而生成,并由 64x64 大小的 Sprite (图 block )组成,正如您可以想象的那样,随着您的前进,许多 Sprite 会添加到场景中。超出视野的 Sprite 的可见属性设置为 false,但随着玩家前进并生成大量地形,我的帧速率 (FPS) 会大幅下降。如果只有屏幕上的 Sprite 将其可见属性设置为 true,为什么会出现这种情况?我一遍又一遍地检查,只有屏幕上的 Sprite 的可见属性设置为 true,并且不明白为什么我的 FPS 在我进行过程中下降这么多,Phaser 是否仍在渲染这些可见设置为 false 的 Sprite ? p>

最佳答案

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

这是 Recycling. 的示例

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

使用步骤如下:

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

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

关于javascript - Phaser 是否渲染可见设置为 false 的 Sprite ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37877541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com