Menu
CoddyTech

Najlepszy czas

Część sekcji Tworzenie prawdziwych gier ścieżki Unity w Coddy. Lekcja 53 z 56.

challenge icon

Wyzwanie

Średni

Ostatni krok: każdy poziom zapamiętuje Twój najlepszy czas. Zachowaj wszystko z wcześniejszych lekcji. HUD każdego poziomu ma w prawym górnym rogu element BestText, a scena przypisuje go do nowego pola bestText w FinishLine.

W FinishLine (dodaj using TMPro;):

  • Pole typu TMP_Text o nazwie bestText, którego wartość ustawia Inspector, oraz czas biegu: wartość typu float, która zwiększa się co klatkę o Time.deltaTime.
  • Każdy poziom zapisuje swój najlepszy czas pod własnym kluczem PlayerPrefs: BestTime_ i nazwę poziomu, na przykład BestTime_Level1.
  • W Start wyświetl zapisany najlepszy czas poziomu z jednym miejscem po przecinku, jako Best: 12.4 s, albo Best: none, jeśli nie ma jeszcze najlepszego czasu.
  • Gdy gracz przekroczy linię mety, przed załadowaniem kolejnego poziomu zapisz czas biegu, jeśli poziom nie ma jeszcze najlepszego czasu albo jeśli bieg był szybszy. Wolniejszy bieg nie zmienia najlepszego czasu.

Naciśnij Play i uzyskaj jakiś czas, a potem spróbuj go poprawić, a następnie naciśnij Check.

Spróbuj swoich sił

using UnityEngine;
using UnityEngine.SceneManagement;

public class FinishLine : MonoBehaviour
{
    void OnTriggerEnter(Collider other)
    {
        if (other.GetComponent<Player>() == null) return;

        Scene level = SceneManager.GetActiveScene();
        Debug.Log(level.name + " complete!");
        int next = level.buildIndex + 1;
        if (next >= SceneManager.sceneCountInBuildSettings)
        {
            next = 0;
        }
        SceneManager.LoadScene(next);
    }
}

Wszystkie lekcje w sekcji Tworzenie prawdziwych gier