我开始为使用Slick2D制作的简单游戏做一些菜单编程。我的菜单本质上是一个选项列表,选中后,可以打开一个包含更多选项的子菜单。
例如:
Main Menu
---------
New Game
Options
选择选项时,将显示以下菜单:
Options
-------
Video
Audio
Back
我的问题是我应该为每个子菜单初始化不同的BasicGameState
,还是有更好的方法来处理这个问题?
答案 0 :(得分:1)
基于状态的游戏非常严格地仅用于在启动画面,“新游戏”菜单(如主菜单)和游戏玩法之间进行分离。超过3或4,意味着您肯定以低效的方式使用它们。
BasicGameState类应包含您的所有游戏代码,包括该游戏状态中可用的菜单交互内容。
如果你想要按照你的描述做一个菜单,你可以创建一个名为MenuBar的类,并用MenuItem类填充它,其中包含Item类。当在某个x边界处单击菜单栏时,该MenuItem可以将布尔值翻转为true,以显示它的子项目。如果之后鼠标不在边界内,则布尔值将翻转为false,而不是绘制它的Item。
希望这会让你朝着正确的方向前进。对你想要放在BasicGameStates中的内容非常挑剔(我也建议阅读Singleton的内容,因为这就是BasicGameStates:http://en.wikipedia.org/wiki/Singleton_pattern,因为你应该只拥有一个独特类型的每个游戏状态。因此,为每个子菜单创建一个单独的游戏状态将非常低效,并且在slick2d库中使用时很麻烦。