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

Vel*_*jko 12 stage libgdx

我正在开发游戏,需要在我的游戏画面之上使用一些GUI.像FrameLayoutAndroid中的东西.

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

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

有人可以为我清楚吗?

P.T*_*.T. 23

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

要设置它,你会做这样的事情:

InputMultiplexer multiplexer = new InputMultiplexer();
multiplexer.addProcessor(stage);
multiplexer.addProcessor(gameScreenInputProcessor);
Gdx.input.setInputProcessor(multiplexer);
Run Code Online (Sandbox Code Playgroud)

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

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

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