현재 Allegro 5와 함께 C ++ 11에서 2D RPG를 만들고 있습니다.
내 목표는 옵션 메뉴에서 옵션이 변경 될 때 게임 설정을 어떻게 든 업데이트하는 것입니다. 사용자가 게임을 다시 시작하도록하고 싶지 않습니다. 해상도를 변경하거나 전체 화면에서 창으로 전환 할 때 다른 게임을 다시 시작할 필요가 없으므로 내 게임도 마찬가지입니다. 아래 시스템의 단순화 된 모습을 참조하십시오.
옵션 화면에서 게임 오브젝트를 직접 호출하고 싶지는 않습니다. 점선은 단지 내가 달성하려는 효과를 설명하기위한 것입니다. 시스템의 다른 부분에서 옵션이 변경 될 때 게임이 업데이트되는 원인이됩니다.
상해
ScreenManager에는 GameScreen
현재 존재 하는 모든 객체 의 목록이 있습니다 . 팝업을 포함하여 게임에서 다양한 화면이 표시됩니다. 이 디자인은 C # / XNA 의 게임 상태 관리 샘플을 다소 준수합니다 .
는 ScreenManager
제에 대한 참조 포함 Game
개체를. Game
개체 초기화하고 수정 게임의 설정. 해상도를 변경하려면 전체 화면으로 이동하거나 Game
클래스 에서 볼륨을 음소거하십시오 .
그러나 OptionsScreen은 현재 Game 클래스에 액세스 할 수 없습니다. 아래 다이어그램을 참조하십시오.
게임 화면은 onFinished
, onTransitionStart
및의 세 가지 이벤트를 신호 할 수 있습니다 onTransitionEnd
. onOptionsChanged
하나의 화면 만 수행하기 때문에 없습니다 . ScreenManager는 모든 화면을 GameScreen
s 로 처리하므로 이벤트 처리를 설정할 수 없습니다 .
내 질문은 OptionsMenu의 변경 사항을 다시 시작하지 않아도 즉시 변경되도록 디자인을 어떻게 변경할 수 있습니까? Game
적용 버튼을 클릭하면 객체 업데이트를 요청하는 것이 좋습니다 .