Status Game
Termasuk bagian Membangun Game Sungguhan dalam perjalanan Unity di Coddy. Pelajaran 14 dari 56.
Sebuah game selalu berada dalam satu status pada satu waktu: menunggu pemain, sedang berjalan, atau selesai. Dua bool seperti isPlaying dan isOver bisa saja tanpa sengaja sama-sama bernilai true, dan string seperti "Playng" berhasil dikompilasi, tetapi tidak pernah cocok. C# memiliki tipe untuk daftar pilihan tetap, yaitu enum. Lampu penyeberangan ini menggunakannya:
public enum Signal { Red, Yellow, Green }
public class Crossing : MonoBehaviour
{
public Signal signal;
void Update()
{
if (signal == Signal.Red && Input.GetMouseButtonDown(0))
{
signal = Signal.Green;
Debug.Log("Walk!");
}
}
public bool CanWalk()
{
return signal == Signal.Green;
}
}enum Signal { Red, Yellow, Green } membuat tipe baru dengan tepat tiga nilai, yang ditulis sebagai Signal.Red, Signal.Yellow dan Signal.Green. Field Signal menyimpan salah satunya pada satu waktu. Kamu membandingkannya dengan == dan mengubahnya dengan =. Salah ketik Signal.Gren menyebabkan error kompilasi, jadi kesalahan itu terlihat sebelum kamu menekan Play.
enum dideklarasikan di luar class, sehingga setiap script dapat menggunakan Signal, dan script pejalan kaki dapat menanyakan crossing.CanWalk(). Field enum baru dimulai dari nilai pertama, yaitu Red di sini. Di Inspector, field enum publik ditampilkan sebagai daftar tarik-turun berisi nilai-nilainya. Di balik layar, setiap nilai adalah angka yang dihitung mulai dari 0: (int)Signal.Green bernilai 2.
Tantangan
MudahSeberangi lantai tanpa menyentuh lava. GameManager (sebuah singleton) dan skrip Lava sudah tersedia, sekarang tambahkan state ke game.
- Di
GameManager.cs, di atas class, deklarasikan enumGameStatedengan nilaiReady,Playing, danGameOver, sesuai urutan tersebut, lalu tambahkan field publikGameStatebernamastateke GameManager. Game dimulai dalam keadaan Ready. - Saat game dalam keadaan Ready, tombol Space memulai game: state berubah menjadi Playing dan
Go!dicatat di log. - Lava memanggil
HitLava(). Saat game dalam keadaan Playing, itu mengakhiri game: state berubah menjadi GameOver danGame overdicatat di log. Tombol Space tidak pernah memulai ulang game yang sudah berakhir. - Di
Player.cs, tombol panah menggerakkan pemain hanya saat state dalam keadaan Playing.
Tekan Play, coba tombol panah sebelum menekan Space, lalu berjalanlah menuju lava, kemudian tekan Check.
Coba sendiri
using UnityEngine;
// Deklarasikan enum GameState di sini: Ready, Playing, GameOver
public class GameManager : MonoBehaviour
{
public static GameManager Instance;
// field GameState public bernama state
void Awake()
{
Instance = this;
}
void Update()
{
// Saat Ready, Space memulai permainan dan mencatat Go!
}
public void HitLava()
{
// Saat Playing, permainan berakhir: catat Game over
}
}
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 Bank3Pengelola Game
Satu Skrip Menjalankan GameSingletonStatus GamePercabangan Berdasarkan StatusUlasan: Pengelola Ronde6Proyek: Pelari Tanpa Akhir
Tiga JalurRintangan di Depan