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.
Tantangan
MudahDua 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 kefallsdan mulai ulang level tempat player berada: jatuh di Level2 akan memulai ulang Level2. fallsmenghitung setiap kali player jatuh selama permainan, jadi nilainya harus tetap tersimpan setelah pemuatan ulang. Start sudah menampilkannya sebagaiFalls: 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
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Membangun Game Sungguhan
4Scene dan Level
Muat SceneMulai Ulang LevelLevel BerikutnyaPertahankan Antar-SceneRekap: Pilih Level10Proyek: Platformer 3D
LintasanPlatform Bergerak2Tombol dan Layar
Tombol dan onClickLambdaMenghubungkan di InspectorPanel Aktif dan NonaktifBilah KesehatanRangkuman: Toko Upgrade5Menyimpan dengan PlayerPrefs
Simpan AngkaMuat dengan Nilai DefaultSkor TertinggiSimpan PengaturanUlasan: Koin di Bank