Menu pauzy

Od dnia, w którym nauczyłem się build’ować i uruchamiać grę na pełnym ekranie, zaczęło mi brakować jednej rzeczy. Możliwości jej wyłączenia. Jedyną opcją było Alt+Tab i ręczne zamykanie aplikacji. Znudziło mi się już 🙂

Przemyślenia

Ale po co w ogóle ktoś wymyślił mechanizm zatrzymywania gry? Każdy z nas pamięta chyba polskie Pegasusy (które były klonami japońskiego Famicoma / NES-a). Miały one jeden problem. Nie można było zapisać aktualnego stanu gry, do którego można będzie wrócić następnego dnia.

Jednym ze sposobów obejścia tego problemu było wprowadzenie kodów do poziomów. Po wpisaniu hasła rozpoczynaliśmy grę na wybranej przez nas planszy.

Dopiero Shigeru Miyamoto (twórca Mario) w swojej następnej grze – The Legend of Zelda – wprowadził możliwość zapisu gry.

Jednak zanim to nastąpiło, gracze mieli do dyspozycji jeszcze jedną możliwość. Zatrzymać grę na chwilę, poprzez wciśnięcie guzika Start (albo Select, nie pamiętam) i wtedy można było spokojnie:

  • wyrzucić śmieci,
  • ugotować obiad,
  • skończyć studia.

Praktyka

W jaki sposób powinna działać pauza w mojej grze? Po wciśnięciu klawisza ‚Escape’ wyświetli się małe menu z przyciskami wznowienia gry oraz wyjścia do menu głównego. Kluczowym elementem jest ustawienie timeScale na 0.

Logikę trzeba wynieść do publicznych metod, bo będą musiały zostać podpięte pod guziki. Skrypt jest podpięty pod Canvas z przyciskami.

Nie potrafiłem znaleźć w jaki sposób dezaktywować Canvas, na którym znajduje się menu pauzy, dlatego chwilowo przenoszony jest poza ekran gry, w momentach w których nie jest potrzebny.