これまではabstractであるMenuScreenを継承してMainManuScreenを実装していた。
実装を変えれば、別のメニューが作れるということは想像できる。
別の実装のOptionsMenuScreenを作って、MainManuScreen内のOptionのMenuEntryを選択したイベント内で、ScreenManagerにaddScreen()した。
このままでは二つのGameScreenが重なって表示されてしまう。
GameScreenにIsPopupプロパティーを設けて、ポップアップタイプのGameScreenでないときは重なって表示されないように、 ScreenManagerのUpdate()を変更した。
while(screensToUpdate.Count > 0) { //GameScreenを後ろから順番に参照する GameScreen screen = screensToUpdate[screensToUpdate.Count - 1]; screensToUpdate.RemoveAt(screensToUpdate.Count - 1); screen.Update(gameTime, otherScreenHasFocus, coveredByOtherScreen); if(!otherScreenHasFocus) { screen.HandleInput(input); otherScreenHasFocus = true; } //もしGameScreenがポップアップタイプでなかったら、次のスクリーンは coveredByOthierScreen=trueになる。(覆い隠されている) if(!screen.IsPopup) { coveredByOtherScreen = true; } }
ここまでのプロジェクト(133KB)
0 コメント :: MenuScreenの継承
コメントを投稿