Menu
CoddyTech

Mulai Ulang Level

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

Cara tercepat untuk mereset level adalah memuatnya lagi. SceneManager.GetActiveScene() mengembalikan scene yang sedang terbuka, dan name (atau buildIndex)-nya adalah yang diterima oleh LoadScene. Tombol Restart pada panel game over ini memanggil:

public void Restart()
{
    SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}

Unity menghancurkan scene yang terbuka dan membangunnya lagi dari file scene. Setiap object kembali ke posisi yang ditetapkan scene, termasuk peti yang dijatuhkan pemain, setiap field kembali memiliki nilai Inspector-nya, dan Awake serta Start berjalan lagi. Tidak ada kode yang perlu mengembalikan semua hal satu per satu. Karena tombol ini meminta scene aktif, bukan nama seperti "Level3", script yang sama dapat memulai ulang level apa pun tempat script itu dipasang.

Field static bukan bagian dari scene: field itu milik class, jadi pemuatan ulang tidak mengubahnya. private static float bestTime; menyimpan waktu terbaik selama proses memulai ulang, sedangkan private float time; biasa dimulai lagi dari 0 bersama scene baru. GameManager.Instance juga static: setelah pemuatan ulang, nilainya menunjuk ke GameManager yang telah dihancurkan sampai Awake milik GameManager baru menetapkan nilainya.

challenge icon

Tantangan

Mudah

Dua level, Level1 dan Level2, masing-masing memiliki object Level yang memuat script LevelRestart. Tombol panah menggerakkan Player, dan blok emas di Level1 memuat Level2 (keduanya sudah siap). Selesaikan LevelRestart.cs:

  • Saat player jatuh melewati fallY (-3), tambahkan 1 ke falls dan mulai ulang level tempat player berada: jatuh di Level2 akan memulai ulang Level2.
  • falls menghitung setiap kali player jatuh selama permainan, jadi nilainya harus tetap tersimpan setelah pemuatan ulang. Start sudah menampilkannya sebagai Falls: 1.

Tekan Play, berjalanlah melewati tepi di kedua level, lalu tekan Check.

Coba sendiri

using UnityEngine;
using TMPro;

public class LevelRestart : MonoBehaviour
{
    public Transform player;
    public TMP_Text fallsText;
    public float fallY = -3f;
    private int falls;

    void Start()
    {
        fallsText.text = "Falls: " + falls;
    }

    void Update()
    {
        // Jika berada di bawah fallY: hitung kejadian jatuh dan mulai ulang level tempat pemain berada
    }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Membangun Game Sungguhan