Najlepszy bieg
Część sekcji Tworzenie prawdziwych gier ścieżki Unity w Coddy. Lekcja 32 z 56.
Wyzwanie
ŚredniOstatni krok: zapamiętaj najlepszy wynik. Zachowaj wszystko z poprzednich lekcji. Na kanwie w prawym górnym rogu znajduje się BestText, a w panelu ukryty NewBestText (New best!); scena umieszcza je w dwóch nowych polach GameManager: public TMP_Text bestText; i public GameObject newBestText;. Zapisz najlepszy wynik pod kluczem BestRun, w pełnych metrach:
- W
Start()wczytaj najlepszy wynik (0 dla nowego gracza) i wyświetl go jakoBest: 57 m. - W
GameOver(), gdy pełna liczba metrów w biegu,Mathf.FloorToInt(distance), przekroczy najlepszy wynik, zapisz nowy najlepszy wynik, wyświetl go i pokażnewBestText. Krótszy bieg niczego nie zmienia.
Najlepszy wynik pozostaje zapisany podczas ponownego biegu oraz po zamknięciu gry. Naciśnij Play, ustanów najlepszy wynik i spróbuj go pobić, a następnie naciśnij Check.
Spróbuj swoich sił
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using TMPro;
public enum GameState { Playing, GameOver }
public class GameManager : MonoBehaviour
{
public static GameManager Instance;
public float speed = 10f;
public float speedUp = 0.5f;
public float maxSpeed = 20f;
public TMP_Text distanceText;
public GameObject gameOverPanel;
public Button restartButton;
public GameState state = GameState.Playing;
private float distance;
void Awake()
{
Instance = this;
}
void Start()
{
restartButton.onClick.AddListener(Restart);
}
void Update()
{
if (state != GameState.Playing) return;
speed = Mathf.Min(speed + speedUp * Time.deltaTime, maxSpeed);
distance += speed * Time.deltaTime;
distanceText.text = "Distance: " + Mathf.FloorToInt(distance) + " m";
}
public void GameOver()
{
state = GameState.GameOver;
speed = 0f;
gameOverPanel.SetActive(true);
}
void Restart()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
}
Wszystkie lekcje w sekcji Tworzenie prawdziwych gier
1Tekst na ekranie
Canvas i tekstWyświetlanie wynikuFormatowanie liczbOdliczanie czasuPowtórka: prędkościomierz4Sceny i poziomy
Wczytaj scenęUruchom poziom ponownieNastępny poziomZachowaj między scenamiPodsumowanie: wybór poziomu10Projekt: platformówka 3D
TrasaRuchome platformy2Przyciski i ekrany
Przyciski i onClickLambdyPodłączanie w InspectorzeWłączanie i wyłączanie paneliPaski zdrowiaPodsumowanie: sklep z ulepszeniami5Zapisywanie za pomocą PlayerPrefs
Zapisz liczbęWczytywanie z wartością domyślnąNajlepszy wynikZapisz ustawieniaPodsumowanie: monety w banku3Menedżer gry
Jeden skrypt obsługuje gręSingletonStany gryInstrukcja switch dla stanuPowtórka: menedżer rund6Projekt: Niekończący się bieg
Trzy toryPrzeszkody przed tobą