如果整个“游戏世界”比视口(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/