12 我知道,将鼠标移到按钮上方时,使按钮突出显示很容易,但是在子菜单中,我有点卡住了。任何人都有一些最好的方法来获得带有子菜单的主菜单?(例如,单人游戏->载入保存->保存1-5?->开始游戏等) gui — 德拉尔 source
12 通常使用一堆游戏状态来完成此操作。例如,上面列出的每个项目将按以下方式推入堆栈: 游戏玩法 选择保存 单人玩家 主菜单 堆栈中每个状态引用其子项的位置。当单击一个按钮时,它的相应状态被推到堆栈上,并成为绘制并与之交互的最顶层项目。通常,除非层之间没有某种透明性,否则您只会绘制该顶部状态,在这种情况下,您将从堆栈的底部开始绘制,直到绘制活动状态为止。 — 肖恩·詹姆斯 source 如果您想了解有关游戏状态堆栈的更多想法,请问 — The Communist Duck 2010年
6 根据确切的要求,您绝对应该将其实现为有限状态机(FSM)或状态栈(子菜单)。FSM中的当前子菜单或堆栈顶部的子菜单中的哪一个子菜单都会绘制到屏幕上并处理输入。然后,当它检测到用户单击按钮时,它将切换FSM或将正确的状态压入堆栈,以转到下一个屏幕。 在您的情况下,我认为堆栈是最好的,但是如果您有一个更复杂的菜单系统可以任意跳转菜单,那么您想使用FSM。 — cket source
4 “最佳方式”完全是主观的。查看其他游戏的运行方式,看看是否找到运行良好的游戏。您绝对需要的一件事是用户单击“取消”并返回上一级的方法。您可以为每个菜单对象提供对从其打开菜单的引用,也可以使用堆栈来实现。 除此之外,这还取决于游戏的感觉以及菜单的感觉。每个菜单都应该占据整个屏幕的最终幻想风格吗?它们是否应该像Windows子菜单一样彼此分支?你应该去吃一些异国风情的东西吗?完全取决于您。 — 梅森·惠勒 source