Menu
CoddyTech

احتفظ بأفضل جولة

جزء من قسم هندسة الألعاب في Unity في رحلة Unity على Coddy. الدرس 60 من 64.

اكتملت Arena Survivor: عدو مجرد Enemy بنوعين، وIDamageable لكل ضربة، وموجات من ScriptableObject، وعناصر التقاط خلف واجهة، وHUD يكتفي بالاستماع، وأخيرًا حفظ بصيغة JSON لأفضل جولة.

challenge icon

التحدي

متوسط

احتفظ بأفضل نتيجة في best.json.

  1. في GameManager.cs، أضف صنفًا [System.Serializable] باسم BestRun، يحتوي على عددين صحيحين عامّين هما wave وkills.
  2. يحمّل Start البيانات من best.json في Application.persistentDataPath باستخدام JsonUtility، إذا كان الملف موجودًا.
  3. عند انتهاء اللعبة، تصبح الموجة الأعلى، أو الموجة نفسها مع عدد أكبر من عمليات القتل، هي الأفضل وتُحفَظ؛ ويعرض bestText النص Best: wave 3, 12 kills.

اضغط «العب» ودع شخصيتك تسقط مرتين: ستبقى أفضل نتيجة كما هي. ثم اضغط «تحقق».

جرّب بنفسك

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 iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس هندسة الألعاب في Unity

تدرّب بنفسك: Playground لـ Unity