似乎我对下一个东西感到困惑:
我努力但仍然无法理解这些术语的不同之处。 我正在尝试做什么: 创建一个将从Game扩展的类(实现ApplicationListener或Screen),它将是所有动作发生的区域(玩家移动,产生敌人等)。然后创建一个可能实现Screen的类。分数,乘数和一些有用的文本将在那里。 然后我想在另一个类中创建一个舞台,其中包括我的课程(在屏幕的高处和在下面的游戏区域的分数的细线。换句话说,我想划分游戏和文本。)
希望你能得到这个想法,那么我应该如何实现游戏,分数和包含它们的主要课程? (Screen,ApplicationListener,Game) 或者有一种方法可以更容易地做到这一点?
答案 0 :(得分:3)
ApplicationListener
是LibGDX应用程序的入口点。 LibGDX有几个后端支持多个平台。所有这些后端都会获得ApplicationListener
,这将是您自制的课程之一。
Game
实际上implements ApplicationListener
这意味着您还可以提供Game
而不是ApplicationListener
。但是Game
具有更多功能,因为它是一个类而不仅仅是一个接口。它为您提供了一种基本方法,可以将游戏分成几个逻辑部分,从而使您的代码更加清晰。这些部分称为Screens
。 Game
始终会有一个Screen
,其中Game
将被视为活动的Screen
中的所有方法实际上只是转发到当前有效的Screen
。
SplashScreen
是您实现的另外一个类。它可以是LoadingScreen
,GameplayScreen
或MainMenuScreen
......可能是OptionsScreen
和HighscoresScreen
。怎么样Screen
?你明白这个想法。每当您想要切换Game.setScreen()
时,您都会使用Screen.hide()
来执行此操作。这反过来会在下一个Screen
上的当前Screen.show()
和Screen
上调用{{1}}。
答案 1 :(得分:1)
ApplicationListener
界面为您提供了主游戏循环调用的所有方法:
create()
。dispose()
。pause()
。resume()
后回到应用程序时,会调用pause()
。resize()
。render()
一次(每次最多60次)。扩展Game
或多或少相同,但它已经有一些deffault实现。那些deffault实现在当前屏幕上调用此函数。因此,如果您开始在create()
课程中调用Game
,则会针对您当前的create()
调用screen
。
Screen
表示必须在Screen
上呈现的内容。大多数情况下,不同的Screen
用于不同的逻辑。例如,MainMenuScreen
一个GameScreen
和一个OptionsScreen
。可以通过调用Screen
课程中的setScreen()
来设置Game
个hide()
。对于新Screen
,这会自动为当前show()
和Screen
调用{{1}}。
我希望通过了解Libgdx来帮助你。