Menu
CoddyTech

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.

challenge icon

Tantangan

Mudah

Seberangi lantai tanpa menyentuh lava. GameManager (sebuah singleton) dan skrip Lava sudah tersedia, sekarang tambahkan state ke game.

  • Di GameManager.cs, di atas class, deklarasikan enum GameState dengan nilai Ready, Playing, dan GameOver, sesuai urutan tersebut, lalu tambahkan field publik GameState bernama state ke 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 dan Game over dicatat 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
    }
}
quiz iconUji dirimu

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

Semua pelajaran di Membangun Game Sungguhan