Menu
CoddyTech

Satu Skrip Menjalankan Game

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

Letakkan skor di script pemain, jumlah nyawa di script kesehatan, dan pemeriksaan game-over di script ketiga. Setiap script membutuhkan angka dari script lainnya, jadi setiap aturan baru memengaruhi beberapa file. Game Unity biasanya menyimpan angka-angka itu di satu script, GameManager, pada GameObject kosong tersendiri. Script ini mengelola skor, jumlah nyawa, dan aturan yang mengakhiri game. Script lain hanya melaporkan kejadian dengan memanggil method publiknya. Dalam adu penalti ini, jaring melaporkan setiap gol:

public class GameManager : MonoBehaviour
{
    private int goals;
    private int shotsLeft = 5;

    public void ShotTaken(bool scored)
    {
        if (shotsLeft == 0) return;
        shotsLeft--;
        if (scored) goals++;
        Debug.Log("Goals: " + goals + ", shots left: " + shotsLeft);
        if (shotsLeft == 0) Debug.Log("Full time: " + goals + " goals");
    }
}
// Net.cs, pada trigger gawang
public GameManager game;

void OnTriggerEnter(Collider other)
{
    if (other.CompareTag("Ball")) game.ShotTaken(true);
}

Jaring tidak tahu berapa banyak tendangan yang tersisa atau kapan game berakhir. Jaring melaporkan gol, lalu manager menentukan artinya. Script kiper melaporkan penyelamatan dengan game.ShotTaken(false). Untuk adu penalti dengan 3 tendangan, kamu cukup mengubah satu angka di satu script. Pemeriksaan di bagian atas ShotTaken mencegah bola yang masuk setelah waktu berakhir tetap dihitung.

Kamu mengisi field game di Inspector dengan menyeret objek GameManager ke field tersebut, lalu Unity menemukan script GameManager pada objek itu. Manager juga menjadi tempat untuk HUD: saat manager menyimpan teks skor dan panel game-over, layar berubah di method yang sama dengan perubahan angka, dan tidak ada script lain yang menyentuh UI.

challenge icon

Tantangan

Mudah

Perburuan permata. Tombol panah menggerakkan Player (skripnya sudah siap). Permata bernilai sesuai points-nya, bom mengurangi nyawa, dan GameManager mengelola semuanya. Inspector sudah menghubungkan field game setiap permata dan bom ke object GameManager, serta field GameManager ke HUD dan Player.

Di GameManager.cs:

  • AddScore(int points) menambahkan points ke score dan menampilkannya di scoreText, seperti Score: 6.
  • LoseLife() mengurangi lives sebanyak 1 (mulai dari 3) dan menampilkannya di livesText, seperti Lives: 2.
  • Saat lives mencapai 0, permainan berakhir: tampilkan gameOverPanel dan nonaktifkan skrip Player agar tombol panah berhenti berfungsi. Setelah itu, AddScore tidak mengubah apa pun.

Di Gem.cs dan Bomb.cs: saat Player (dengan tag Player) menyentuh salah satunya, objek itu memberi tahu game (permata melaporkan points-nya, bom melaporkan nyawa yang hilang), lalu menghapus dirinya sendiri.

Tekan Jalankan, kumpulkan permata dan sentuh bom, lalu tekan Periksa.

Coba sendiri

using UnityEngine;
using TMPro;

public class GameManager : MonoBehaviour
{
    public TMP_Text scoreText;
    public TMP_Text livesText;
    public GameObject gameOverPanel;
    public Player player;
    private int score;
    private int lives = 3;
    private bool gameOver;

    public void AddScore(int points)
    {
        // tambahkan poin dan tampilkan skor baru, kecuali permainan sudah berakhir
    }

    public void LoseLife()
    {
        // kurangi satu nyawa dan tampilkan sisa nyawa; saat nyawa mencapai 0, permainan berakhir
    }
}
quiz iconUji dirimu

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

Semua pelajaran di Membangun Game Sungguhan