Libgdx 如何在Android中处理屏幕gui(暂停按钮)的输入?

Libgdx 如何在Android中处理屏幕gui(暂停按钮)的输入?,libgdx,Libgdx,我正在开发用libgdx制作的游戏,在我的游戏屏幕上需要一些GUI。类似于Android中的FrameLayout 我有一个游戏屏幕,在那里一切都在发生。 我现在想要的是添加一个“暂停”按钮,高分信息等 我尝试将一个Stage对象与常规的精灵图形结合起来。 但我在处理输入时遇到了一些问题:如何管理用户是否单击了stage中的暂停按钮,或者是否单击了game area(我应该在其中添加一些项目符号).您应该能够使用管理UI。要使输入正常工作,您需要添加 这样,阶段和当前输入方案都将获得输入 要设置

我正在开发用libgdx制作的游戏,在我的游戏屏幕上需要一些GUI。类似于Android中的
FrameLayout

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

我尝试将一个
Stage
对象与常规的精灵图形结合起来。
但我在处理输入时遇到了一些问题:如何管理用户是否单击了stage中的暂停按钮,或者是否单击了game area(我应该在其中添加一些项目符号).

您应该能够使用管理UI。要使输入正常工作,您需要添加 这样,
阶段
和当前输入方案都将获得输入

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

InputMultiplexer multiplexer = new InputMultiplexer();
multiplexer.addProcessor(stage);
multiplexer.addProcessor(gameScreenInputProcessor);
Gdx.input.setInputProcessor(multiplexer);
(基于源代码的代码示例)

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


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

好吧,我想是的……我已经查看了InputMultiplexer文档……您的答案很有道理。我会试试这个方法……希望它能奏效。Tnx很多!:)我熟悉安卓系统中的输入处理,我希望它的工作原理类似:)