Libgdx屏幕上的gui(用于暂停按钮)

时间:2013-03-04 15:05:49

标签: libgdx stage

我正在制作游戏,需要在我的游戏画面之上使用一些GUI。类似于Android中的FrameLayout

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

我尝试将Stage对象与常规精灵绘图结合起来。 但是我在处理输入方面遇到了一些问题:如果用户点击阶段中的暂停按钮,或者点击游戏区域(我应该添加一些子弹),如何管理......

有人可以为我清楚吗?

1 个答案:

答案 0 :(得分:23)

您应该可以使用Stage来管理您的用户界面。要使输入正常工作,您需要添加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)。此外,输入事件处理程序的布尔返回值对于多路复用器更为重要,因为多路复用器不会传播“已处理”事件。 Stage内的UI事件有自己的“处理”标志(大多数情况下它做的是正确的,但有一些细微的差别)。

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