libGDX Gdx.input.setInputProcessor(InputForGameScreen);我应该做多个吗?

时间:2015-04-03 02:10:18

标签: java libgdx

我的游戏将有多个屏幕,现在我有一个类,一个是InputProcessor和一个GestureListener。我应该为每个屏幕创建单独的输入类,并在show和hide方法上设置屏幕,还是应该只检查哪个屏幕处于活动状态,如果在Input类中有分支,并创建一个处理每个屏幕的所有输入的InputProcessor类?

1 个答案:

答案 0 :(得分:0)

当您对游戏进行编程时,您会将高级设计视为引擎,并且您将引擎逻辑与游戏逻辑分开。例如,如果您了解MVC,那么您就知道代码的这种分离角色是如何发展的。

有一个组件以输入键盘为例,但没有给它"含义",只需将数据存储在某个地方,这包括分析手势,记录手势,识别它并存储"手势' x'收到",只是骗你存储"键A按下"或"密钥A已发布"。这将是游戏/ ui逻辑的当前传递的输入。

你应该让每个屏幕都成为游戏引擎的一个对象,并让游戏逻辑对它们进行修改,但如果你愿意,可以将ui与游戏逻辑分开。在这种情况下,输入将前往其中一个,具体取决于当前哪一个处于活动状态(哪一个具有焦点)。

每个类都应该有自己的方法将预处理的输入解码为特定的命令。因为ui应该有共同的ui组件,所以你可以拥有一个库,然后你就可以继承它们。如果您没有使用常见的ui对象(按钮,滚动面板,面板,文本区域等),那么每个屏幕都必须有自己的处理输入功能。 ui组件接收输入并将其发送到适当的表单对象以进行进一步的工作。游戏逻辑将解码并应用游戏逻辑传递中的内容。

因此具有不同的输入处理器并将它们分配到正确的屏幕,给它们提供有用的名称,如MainMenuInputProcessor。

完成后,你可以在所有事情上打电话。