Sprawdzam Sudoku - Kurs Unity - 3. Szkielet aplikacji

W poprzednim kroku skonfigurowaliśmy Unity oraz GitHub. W tym kroku stworzymy szkielet aplikacji, która posiada stronę główną, panel z ustawieniami, pusty panel z grą, itp.:

Implementacja

Ponieważ widać, że przez ostanie lata sporo się w Unity zmieniło (np. teraz używa się TextMeshPro zamiast zwykłego tekstu) rozpoczynamy od przerobienia prostego samouczka:
Zacznijmy od strony głównej. Chcemy aby w tle znajdowało się zdjęcie Sudoku, ale nie chcemy płacić za zdjęcia "stockowe", dlatego też drukujemy jedną stronę z zadań z WSPC 2021 i robimy zdjęcie samodzielnie:


Pierwszym wyzwaniem jest sprawienie, aby strona tytułowa wyglądała dobrze zarówno w orientacji pionowej jak i poziomej telefonu. Osiągamy to wykorzystując AspectRatioFitter dla tła jak opisane tutaj.


Po przeczytaniu tego dodajemy tytuł zakotwiczony do lewego górnego narożnika oraz panel z przyciskami zakotwiczonymi do prawego dolnego narożnika. 



Otrzymujemy następujące UI:


Dodajemy lecącą w tle muzykę z pixabay.com.


Podążając za Creative Core UI : Add toggles and sliders, pod przyciskiem "Settings" stronę z ustawieniami audio.


Przełączanie pomiędzy stronami implementujemy w edytorze Unity, bez pisania żadnego kodu. Przykładowo, obsługa kliknięcia na przycisk "Settings" to trzy akcje:
  • aktywowanie panelu z ustawieniami
  • dezaktywacja tytułu
  • dezaktywacja panelu z przyciskami


Nieco więcej problemu sprawia stworzenie planszy z grą, oraz takie jej ustawienie, aby wyglądała dobrze przy każdej orientacji telefonu lub tabletu. 


Korzystając z symulatora Unity sprawdzamy czy efekt jest zadowalający:


Udało się uzyskać w miarę dobry wygląd przy wykorzystaniu jedynie GridLayout i odpowiedniego zakotwiczenia paneli.

Na koniec dodajemy obsługę przycisku "Quit". Jest to jedyne miejsce, gdzie musimy napisać parę linijek kodu. Tworzymy więc obiekt GameManager i pod kliknięcie przycisku "Quit" podpinamy metodę menadżera o tej samej nazwie. Następnie implementujemy metodę Quit i upewniamy się, że będzie zawołana również wtedy, kiedy użytkownik naciśnie klawisz "Escape":

public class GameManager : MonoBehaviour
{
    ...
    // Update is called once per frame
    void Update()
    {
        if(Input.GetKey("escape"))
        {
            Quit();
        }
    }

    public void Quit()
    {
#if UNITY_EDITOR
      UnityEditor.EditorApplication.isPlaying = false;
#else
      Application.Quit()
#endif
    }
}
Już teraz widać rzeczy które można poprawić, ale zostawiamy je sobie na później:
  • tłumaczenie aplikacji na inne języki (np. polski)
  • zapisywanie / wczytywanie ustawień aplikacji (teraz np. czy odtwarzać muzykę i jak głośno, w przyszłości zapisywanie stanu gry) 
  • ładniejsze przyciski (wyglądające jak np. komórki z planszy do sudoku), do zrobienia np. w GIMP'ie.

GitHub

Zmiany związane z tym krokiem znajdują się tutaj:

Kolejne kroki

W następnym kroku zaimplementujemy ustawianie wartości w komórkach planszy.

Polski | Angielski

Komentarze

Popularne posty z tego bloga

Sprawdzam Sudoku - Kurs Unity - 2. Konfiguracja

Sprawdzam Sudoku - Kurs Unity - 1. Pomysł