Menu
CoddyTech

Akhir Malam

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

Tantangan terakhir ini menyelesaikan seluruh permainan: sebuah pengelola dengan beberapa status, jeda yang menghentikan waktu, dua akhir, dan mulai ulang yang mengatur kembali skala waktu.

challenge icon

Tantangan

Sulit

Tambahkan jeda, dua akhir, dan mulai ulang.

  1. pauseButton hanya beralih antara Playing dan Paused: Paused mengatur Time.timeScale ke 0 dan menampilkan pausePanel, sedangkan Playing membatalkan keduanya.
  2. Pada 0 detik, malam berakhir dengan Won. Saat Won atau Lost: skala waktu menjadi 0, endPanel ditampilkan dengan You survived the night! atau The bats got you di endText.
  3. restartButton mengatur skala waktu ke 1 dan memuat ulang scene.

Tekan tombol “Main”, jeda, kalah, lalu main lagi. Setelah itu, tekan tombol “Periksa”.

Coba sendiri

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using TMPro;

public class GameManager : MonoBehaviour
{
    public enum State { Playing, Paused, Won, Lost }

    public static GameManager Instance;

    public float nightLength = 15f;
    public float spawnEvery = 2f;
    public GameObject batPrefab;
    public Transform[] spawnPoints;
    public TMP_Text dawnText;
    public Button pauseButton;
    public GameObject pausePanel;
    public GameObject endPanel;
    public TMP_Text endText;
    public Button restartButton;

    public State state;

    private float timeLeft;
    private float spawnTimer;

    void Awake()
    {
        Instance = this;
    }

    void Start()
    {
        state = State.Playing;
        timeLeft = nightLength;
        ShowDawn();
    }

    void Update()
    {
        if (state != State.Playing) return;

        timeLeft -= Time.deltaTime;
        spawnTimer += Time.deltaTime;
        if (spawnTimer >= spawnEvery)
        {
            spawnTimer -= spawnEvery;
            Transform point = spawnPoints[Random.Range(0, spawnPoints.Length)];
            Instantiate(batPrefab, point.position, Quaternion.identity);
        }
        ShowDawn();
    }

    public void Lose()
    {
        if (state != State.Playing) return;
        state = State.Lost;
    }

    void ShowDawn()
    {
        dawnText.text = "Dawn in " + Mathf.CeilToInt(timeLeft);
    }
}
quiz iconUji dirimu

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

Semua pelajaran di Membangun Game Sungguhan

Latihan sendiri: Playground Unity