如何在不重新启动的情况下从选项屏幕更新显示设置?
我目前正在使用Allegro 5和boost在C ++ 11中创建2D RPG。 我的目标是在“选项”菜单中更改选项后以某种方式更新我的游戏设置。我不想强迫用户重新启动我的游戏。其他游戏在更改分辨率或从全屏模式切换到全屏模式时不需要重启,因此我的游戏也不需要重启。请在下面查看系统的简化视图。 请注意,我不一定要直接从OptionsScreen调用我的Game对象。虚线仅仅是为了说明我要达到的效果。当在系统的不同部分中更改选项时,以某种方式导致游戏更新。 详细说明 ScreenManager包含GameScreen当前存在的所有对象的列表。这些将是游戏中的各种屏幕,包括弹出窗口。该设计或多或少地遵循C#/ XNA中的游戏状态管理示例。 在ScreenManager包含了我的参考Game对象。该Game对象初始化和修改游戏的设置。如果要更改分辨率,请全屏播放或静音,这是我在Game课堂上要做的。 但是,OptionsScreen当前无法访问Game类。见下图: GameScreen可以发信号三个事件onFinished,onTransitionStart和onTransitionEnd。没有,onOptionsChanged因为只有一个屏幕可以做到这一点。ScreenManager无法为此设置事件处理,因为它将所有屏幕都处理为GameScreen。 我的问题是,如何更改设计以使OptionsMenu中的更改不需要重新启动,而是立即更改?我最好Game在单击“应用”按钮后请求更新我的对象。