Menu
CoddyTech

Lari Terbaik

Termasuk bagian Membangun Game Sungguhan dalam perjalanan Unity di Coddy. Pelajaran 32 dari 56.

challenge icon

Tantangan

Sedang

Langkah terakhir: ingat catatan jarak terbaik. Pertahankan semua yang dibuat dalam pelajaran sebelumnya. Canvas memiliki BestText di kanan atas, dan panel memiliki NewBestText yang tersembunyi (New best!); scene menempatkannya di dua field baru pada GameManager, public TMP_Text bestText; dan public GameObject newBestText;. Simpan catatan terbaik dengan kunci BestRun, dalam satuan meter bulat:

  • Di Start(), muat catatan terbaik (0 untuk pemain baru) dan tampilkan sebagai Best: 57 m.
  • Di GameOver(), saat jarak tempuh dalam meter bulat, Mathf.FloorToInt(distance), melampaui catatan terbaik, simpan catatan terbaik yang baru, tampilkan nilainya, dan tampilkan newBestText. Jarak tempuh yang lebih pendek tidak mengubah apa pun.

Catatan terbaik tetap tersimpan saat kamu menekan Jalankan lagi dan saat kamu keluar dari game. Tekan Play, buat catatan terbaik dan coba lampaui, lalu tekan Periksa.

Coba sendiri

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

Semua pelajaran di Membangun Game Sungguhan