何时在 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 Game
、Load Game
、Options
和 Exit
。
然后:
New Game
有更多选项,例如difficulty
、# of players
+ Start
按钮。
Load Game
有多个保存选项以及Load
和Delete
选项可供选择。
Options
具有 Graphics level
和 Volume
单选/滑块 + Apply
、Discard
按钮。
最后,游戏屏幕将有一个可平移的游戏窗口,以及在屏幕一侧的覆盖 UI。
我的问题是,我不知道为这些 UI 部分使用什么类。
来自this 的回答我知道Screen
是一个完整的UI 页面,但似乎为每个主菜单选项创建一个新的Screen
和一个Stage
似乎有点矫枉过正,但也许这就是要走的路。我不知道我是否应该使用Group
并根据用户点击的内容显示/隐藏它们。我还被告知使用Table
来布置游戏画面。我完全被我在网上找到的所有指南弄糊涂了。每个人似乎都与众不同。
文档非常好,但从未说明各个部分如何相互集成。
对于如何在 LibGDX 中使用这些类有什么共识吗?还是个人喜好?
【问题讨论】:
【参考方案1】:Screen
是核心 libGdx 部分,代表许多应用程序屏幕之一,例如mainscreen
、settingsscreen
、gamescreen
等等。
很难在一个 ApplicationListener
context 中维护不同的 UI 屏幕,需要不同的生命周期。
所以有一个Game
类和Screen
接口有助于在设备屏幕上一次显示一个活动屏幕。
我想你现在已经清楚了,为什么我们需要不同的屏幕。
现在我如何设计一个类似于 MenuSceen 的屏幕,它包含菜单按钮、游戏名称和充当 HomeScreen 的类似元素。
您可以使用 scene2d,这是一个 2D 场景图,用于使用角色层次结构构建 UI。 Stage 和 Group 是 scene2d 的核心类。
Stage
类有一个摄像头、SpriteBatch 和一个根组,负责绘制演员和分配输入事件。
Group
类是可能有子演员的演员。
【讨论】:
以上是关于何时在 LibGDX 中使用 Screen、Stage 和 Group的主要内容,如果未能解决你的问题,请参考以下文章