libgdx - 在具有巨大世界的游戏中正确使用scene2d的舞台

标签 libgdx scene2d

如果整个“游戏世界”比视口(viewport)宽数千倍,并且如果我想使用 scene2d 来管理游戏对象为 Actor s,我应该创建与整个世界一样宽的 Stage 对象,还是应该创建 Stage是当前视口(viewport)周围的某个区域,而不是整个世界?
换句话说,Stage更大的宽度和高度本身会消耗更多的内存,即使我只在它的一个小的视口(viewport)大小的部分渲染对象?

最佳答案

我想你误解了 Stage 到底是什么是。舞台本身并没有真正的尺寸。您没有指定宽度或高度或 Stage ,您只需指定视口(viewport)的宽度和高度。视口(viewport)就像一个窗口,它只显示你世界的一部分,也就是场景。一个 Stage是一个 2D 场景图,它会随着您的 Actors 而“增长” .您拥有的 Actor 越多,您的 Stage 就越大(在内存方面),但这并不取决于您的 Actor 的实际分布范围。如果它们分布得很远,而您只显示整个 Stage 的一小部分,它将被处理得非常高效,因为一个场景图分割了这个巨大的空间,以便能够非常快速地决定是忽略某个 Actor,还是将其绘制在 Screen 上。

这意味着 Stage实际上正是您在这种情况下所需要的,并且您可能不会有任何问题,FPS 和内存方面。当然,如果您的 Stage是视口(viewport)大小的 1000 倍,并且您自己知道某些 Actor 不会很快显示,那么暂时不要将它们添加到舞台上可能是有意义的。

关于libgdx - 在具有巨大世界的游戏中正确使用scene2d的舞台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19699101/

相关文章:

java - LibGDX 允许玩家走过 Block2D 形状的透明区域

java - 在 libgdx 中批处理多维数据集时出现问题

java - (libgdx/scene2d) 使用 Actor 等创建不同的舞台

java - Libgdx 基于TextureAtlas的Scene2d按钮缩放

java - Libgdx 使用 uiskin.json 创建一个带有背景的 TextButton

java - libgdx - 将多个纹理合并为一个

java - Android APK 无效?未在路径 : DexPathList 上找到类 "AndroidLauncher"

java - LibGDX 游戏暂停状态 : Animation flicker/bug

java - LibGDX 如何实现场景二维菜单选项卡?

java - Actor 职务