何时在 LibGDX 中使用 Screen、Stage 和 Group

Posted

技术标签:

【中文标题】何时在 LibGDX 中使用 Screen、Stage 和 Group【英文标题】:When to use Screen, Stage, and Group in LibGDX 【发布时间】:2018-08-18 12:35:55 【问题描述】:

我有一个主菜单屏幕,有 4 个选项,New GameLoad GameOptionsExit

然后:

New Game 有更多选项,例如difficulty# of players + Start 按钮。

Load Game 有多个保存选项以及LoadDelete 选项可供选择。

Options 具有 Graphics levelVolume 单选/滑块 + ApplyDiscard 按钮。

最后,游戏屏幕将有一个可平移的游戏窗口,以及在屏幕一侧的覆盖 UI。

我的问题是,我不知道为这些 UI 部分使用什么类。

来自this 的回答我知道Screen 是一个完整的UI 页面,但似乎为每个主菜单选项创建一个新的Screen 和一个Stage 似乎有点矫枉过正,但也许这就是要走的路。我不知道我是否应该使用Group 并根据用户点击的内容显示/隐藏它们。我还被告知使用Table 来布置游戏画面。我完全被我在网上找到的所有指南弄糊涂了。每个人似乎都与众不同。

文档非常好,但从未说明各个部分如何相互集成。

对于如何在 LibGDX 中使用这些类有什么共识吗?还是个人喜好?

【问题讨论】:

【参考方案1】:

Screen 是核心 libGdx 部分,代表许多应用程序屏幕之一,例如mainscreensettingsscreengamescreen 等等。

主屏幕可能包含设置、播放、关卡等按钮,可帮助您在其他屏幕上重定向。 settingsscreen 可能包含重定向到上一个主屏幕的后退按钮和其他 ui 元素,如声音按钮、音乐按钮、语言选择按钮。

很难在一个 ApplicationListenercontext 中维护不同的 UI 屏幕,需要不同的生命周期。

所以有一个Game 类和Screen 接口有助于在设备屏幕上一次显示一个活动屏幕。

我想你现在已经清楚了,为什么我们需要不同的屏幕。


现在我如何设计一个类似于 MenuSceen 的屏幕,它包含菜单按钮、游戏名称和充当 HomeScreen 的类似元素。

您可以使用 scene2d,这是一个 2D 场景图,用于使用角色层次结构构建 UI。 Stage 和 Group 是 scene2d 的核心类。

Stage 类有一个摄像头、SpriteBatch 和一个根组,负责绘制演员和分配输入事件。

Group 类是可能有子演员的演员。

【讨论】:

以上是关于何时在 LibGDX 中使用 Screen、Stage 和 Group的主要内容,如果未能解决你的问题,请参考以下文章

Libgdx之Game场景切换Screen

何时在 libgdx 中使用演员?啥是缺点和优点?

无法让事件在我的 libgdx Actor 中工作

如何处理 libGDX 中的不同纵横比?

libgdx touchUp 事件

libgdx实现InputProcessor的多个对象