Libgdx 有两个阶段的 HUD

Libgdx Hud with two stages

我有一个应用程序目前只能使用一个阶段,但我需要添加一侧 display/section 作为 HUD,上面有 scores/lives 等,这样 HUD 就在左边, 以及右侧的主手屏幕。游戏主画面固定不动。

通过研究,我找到了几个解决方案。

1 - 两个阶段 2 - 一个有两个组的组,可能使用水平组 3 - 两个相机一个阶段 4 - 一个舞台,一个摄像机,但为每组演员改变摄像机的位置。

我认为,选项 1 是我的偏好,但我有一些问题。

最后跑题了,我对spritebatch有点迷茫。我目前没有使用一个,因为我使用了一个舞台。这样可以吗,还是我仍然应该以某种方式将其与舞台结合使用?并将我所有的演员都加入其中?

据我了解,您正在为您的游戏世界和您的 HUD 使用 scene2d。而且 HUD 不会覆盖游戏世界,而是专门使用它自己的屏幕部分。

舞台并不总是填满整个屏幕。它们没有填充或不填充任何东西的概念,因为它们可以有被绘制出屏幕的对象。但是,它们被裁剪到由其视口定义的矩形。

在您的情况下,您似乎需要两个视口,因此需要两个阶段。你说你没有使用 Viewport,但你是......Stage 自动创建它自己的 ScalingViewport,它设置得像 StretchViewport。 (文档中没有提到 ScalingViewport,它已经过时了。)StretchViewport 通常不好,因为你的游戏会扭曲以适应设备的宽高比。

ExtendViewports 不会导致黑条,只要您不对其设置最大值 width/height,我认为通常是任何游戏世界视图的最佳选择。

您可以将两个视口设置为覆盖您自己计算的屏幕的特定部分。由于这是一个特殊情况,我认为您将不得不直接子class Viewport class(不是它的子classes之一)并使用[=10=操作它们中的每一个].

关于你的最后一个问题:是的,两个阶段都有自己的视口,每个视口都有自己的相机。将两个视口设置为各自拥有自己的屏幕部分后,您还可以将它们设置为将各自的左下角视为 0,0。