12

我正在开发使用 libgdx 制作的游戏,该游戏需要在我的游戏屏幕上方添加一些 GUI。类似于FrameLayoutAndroid 中的东西。

我有 GameScreen 一切都在发生。我现在想要的是添加一个“暂停”按钮、高分信息等。

我尝试将Stage对象与常规精灵绘图结合起来。但是我在处理输入时遇到了一些问题:如果用户在舞台上单击暂停按钮,或单击游戏区域(我应该在其中添加一些项目符号),如何管理......

4

1 回答 1

23

您应该能够使用 aStage来管理您的 UI。为了使输入正常工作,您需要添加一个InputMultiplexer ,以便Stage您当前的输入方案都将获得输入。

要进行设置,您将执行以下操作:

InputMultiplexer multiplexer = new InputMultiplexer();
multiplexer.addProcessor(stage);
multiplexer.addProcessor(gameScreenInputProcessor);
Gdx.input.setInputProcessor(multiplexer);

(代码示例基于来自https://code.google.com/p/libgdx/wiki/InputEvent的代码)

请注意,顺序很重要(我猜您会希望舞台首先获取事件以查看 UI 是否被触摸)。此外,来自输入事件处理程序的布尔返回值对于多路复用器更为重要,因为“已处理”事件不会被多路复用器传播。内部的 UI 事件Stage有自己的“已处理”标志(大多数情况下它会做正确的事情,但有一些细微的差别)。

一种替代方法InputMultiplexer是创建一个“GameScreenActor”(一个新的子类Actor),其中包含您插入到全局的当前游戏屏幕Stage。不过,您必须将输入处理移至 scene2d 方法。这可能不是您的正确选择,但它是一个可行的选择。

于 2013-03-04T15:27:32.100 回答