Menu
CoddyTech

Przetrwaj

Część sekcji Architektura gier w Unity ścieżki Unity w Coddy. Lekcja 47 z 50.

challenge icon

Wyzwanie

Średni

Ostatni krok: rozgrywka się kończy, a najlepszy wynik zostaje zapisany. Zachowaj wszystko z wcześniejszych lekcji. Na kanwie znajduje się ukryty GameOverPanel z elementami ResultText, BestText i przyciskiem RestartButton z etykietą Fight again, a obiekt GameManager ma skrypt GameManager, z ustawionymi w Inspectorze polami hero, spawner, gameOverPanel, resultText, bestText i restartButton.

  • Hero otrzymuje public event Action Died, wywoływane, gdy jego zdrowie spadnie do 0, po wyłączeniu obiektu.
  • W GameManager.cs dodaj klasę [System.Serializable] BestRun z polami public int wave i public int kills.
  • GameManager nasłuchuje zdarzenia Died bohatera oraz Enemy.Died, które zlicza zabójstwa w tej rozgrywce: subskrybuj zdarzenia w OnEnable, a anuluj subskrypcję w OnDisable. W Start wczytuje najlepszy wynik z pliku best.json w Application.persistentDataPath za pomocą JsonUtility, jeśli ten plik istnieje, ukrywa panel i ustawia restartButton tak, aby rozpoczynał grę od nowa.
  • Gdy bohater zginie, zatrzymaj grę (Time.timeScale 0). Wynik rozgrywki to Wave spawnera i liczba zabójstw. To nowy najlepszy wynik, jeśli osiągnął wyższą falę lub tę samą falę z większą liczbą zabójstw: wtedy zostaje najlepszym wynikiem i jest zapisywany do best.json za pomocą JsonUtility.ToJson. Wyświetl wynik rozgrywki w resultText w formacie Wave 2, 7 kills, a najlepszy wynik w bestText w formacie Best: wave 3, 12 kills, a następnie pokaż panel.
  • Przycisk ponownego uruchomienia ustawia skalę czasu z powrotem na 1 i ponownie wczytuje scenę.

Naciśnij Play i walcz, aż polegniesz, a potem spróbuj pobić swój najlepszy wynik. Następnie naciśnij Check.

Spróbuj swoich sił

using UnityEngine;

public class GameManager : MonoBehaviour
{
    // W późniejszej lekcji zostanie to uzupełnione: zakończenie rozgrywki i najlepszy wynik.
}

Wszystkie lekcje w sekcji Architektura gier w Unity