Przetrwaj
Część sekcji Architektura gier w Unity ścieżki Unity w Coddy. Lekcja 47 z 50.
Wyzwanie
ŚredniOstatni 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.
Herootrzymujepublic event Action Died, wywoływane, gdy jego zdrowie spadnie do 0, po wyłączeniu obiektu.- W
GameManager.csdodaj klasę[System.Serializable]BestRunz polamipublic int waveipublic int kills. GameManagernasłuchuje zdarzeniaDiedbohatera orazEnemy.Died, które zlicza zabójstwa w tej rozgrywce: subskrybuj zdarzenia wOnEnable, a anuluj subskrypcję wOnDisable. WStartwczytuje najlepszy wynik z plikubest.jsonwApplication.persistentDataPathza pomocąJsonUtility, jeśli ten plik istnieje, ukrywa panel i ustawiarestartButtontak, aby rozpoczynał grę od nowa.- Gdy bohater zginie, zatrzymaj grę (
Time.timeScale0). Wynik rozgrywki toWavespawnera 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 dobest.jsonza pomocąJsonUtility.ToJson. Wyświetl wynik rozgrywki wresultTextw formacieWave 2, 7 kills, a najlepszy wynik wbestTextw formacieBest: 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
1Komponenty, nie hierarchie
Małe komponentyPodstawowy skrypt przeciwnikaKomponenty abstrakcyjneWspółpracujące komponentyPodsumowanie: modułowa wieżyczka4Dane serializowane
Klasy serializowalneListy w InspectorzeWyliczenia w InspectorzePodsumowanie: tabela łupów10Projekt: Arena przetrwania
BohaterTypy wrogów2Interfejsy w Unity
IDamageableInterfejsy i TryGetComponentGetComponentsPodsumowanie: klawisz interakcji5ScriptableObjects
Zasoby danychStatystyki broniWspółdzielone ustawieniaFale jako danePowtórka: baza danych przedmiotów8Kod wielokrotnego użytku
Metody rozszerzająceGeneryczny singletonGeneryczne metody pomocniczePodsumowanie: FindNearest