Menu
CoddyTech

Simpan Sesi Terbaik

Termasuk bagian Arsitektur Game di Unity dalam perjalanan Unity di Coddy. Pelajaran 60 dari 64.

Arena Survivor selesai: Enemy abstrak dengan dua jenis, IDamageable untuk setiap serangan, gelombang dari ScriptableObject, item yang bisa diambil melalui antarmuka, HUD yang hanya mendengarkan, dan terakhir, penyimpanan JSON untuk permainan terbaik.

challenge icon

Tantangan

Sedang

Simpan permainan terbaik di best.json.

  1. Di GameManager.cs, tambahkan class BestRun dengan atribut [System.Serializable], yang memiliki int publik wave dan kills.
  2. Start memuatnya dari best.json di Application.persistentDataPath menggunakan JsonUtility, jika file tersebut ada.
  3. Saat game berakhir, jika wave lebih tinggi, atau wave sama dengan jumlah kills lebih banyak, jadikan itu yang terbaik dan simpan. bestText menampilkan Best: wave 3, 12 kills.

Tekan tombol “Main” lalu biarkan karaktermu kalah dua kali: hasil terbaik tetap tersimpan. Lalu tekan tombol “Periksa”.

Coba sendiri

using System.IO;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using TMPro;

public class GameManager : MonoBehaviour
{
    [SerializeField] private Hero hero;
    [SerializeField] private WaveSpawner spawner;
    [SerializeField] private GameObject gameOverPanel;
    [SerializeField] private TMP_Text resultText;
    [SerializeField] private TMP_Text bestText;
    [SerializeField] private Button restartButton;

    private int kills;

    void OnEnable()
    {
        hero.Died += GameOver;
        Enemy.Died += CountKill;
    }

    void OnDisable()
    {
        hero.Died -= GameOver;
        Enemy.Died -= CountKill;
    }

    void Start()
    {
        gameOverPanel.SetActive(false);
        restartButton.onClick.AddListener(Restart);
    }

    void CountKill(Enemy enemy)
    {
        kills++;
    }

    void GameOver()
    {
        Time.timeScale = 0f;
        int wave = spawner.Wave;
        resultText.text = "Wave " + wave + ", " + kills + " kills";
        gameOverPanel.SetActive(true);
    }

    void Restart()
    {
        Time.timeScale = 1f;
        SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
    }
}
quiz iconUji dirimu

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

Semua pelajaran di Arsitektur Game di Unity

Latihan sendiri: Playground Unity