Menu
CoddyTech

Bestzeit

Teil des Abschnitts Echte Spiele entwickeln der Unity-Journey von Coddy. Lektion 53 von 56.

challenge icon

Aufgabe

Mittel

Letzter Schritt: Jedes Level merkt sich deine Bestzeit. Behalte alles aus den vorherigen Lektionen bei. Das HUD jedes Levels hat oben rechts ein BestText, und die Szene weist es dem neuen Feld bestText von FinishLine zu.

In FinishLine (using TMPro; hinzufügen):

  • Ein TMP_Text-Feld bestText, das der Inspector festlegt, und die Laufzeit: ein float, der sich in jedem Frame um Time.deltaTime erhöht.
  • Jedes Level speichert seine Bestzeit unter einem eigenen PlayerPrefs-Schlüssel: BestTime_ und dem Namen des Levels, zum Beispiel BestTime_Level1.
  • Zeige in Start die gespeicherte Bestzeit des Levels mit einer Dezimalstelle an, als Best: 12.4 s, oder Best: none, wenn es noch keine gibt.
  • Wenn der Spieler die Ziellinie überquert, speichere vor dem Laden des nächsten Levels die Laufzeit, falls das Level noch keine Bestzeit hat oder der Lauf diese unterbietet. Ein langsamerer Lauf lässt die Bestzeit unverändert.

Drücke Play und stelle eine Zeit auf, versuche dann, sie zu unterbieten, und klicke anschließend auf Check.

Probier es selbst

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);
    }
}

Alle Lektionen in Echte Spiele entwickeln