Menu
CoddyTech
flag Ar iconالعربيةdown icon

أفضل جولة

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

challenge icon

التحدي

متوسط

الخطوة الأخيرة: تذكّر أفضل جولة. احتفظ بكل ما أنجزته في الدروس السابقة. تحتوي لوحة الرسم على BestText في أعلى اليمين، وتحتوي اللوحة على NewBestText مخفي (أفضل نتيجة جديدة!)؛ ويضيف المشهد حقلين جديدين إلى GameManager، هما public TMP_Text bestText; وpublic GameObject newBestText;. احفظ أفضل نتيجة تحت المفتاح BestRun، بوحدة الأمتار الكاملة:

  • في Start()، حمّل أفضل نتيجة (0 للاعب الجديد) واعرضها بالشكل Best: 57 m.
  • في GameOver()، عندما تتجاوز الأمتار الكاملة للجولة، Mathf.FloorToInt(distance)، أفضل نتيجة، احفظ أفضل نتيجة جديدة واعرضها، وأظهر newBestText. الجولة الأقصر لا تغيّر شيئًا.

تظل أفضل نتيجة محفوظة عند اختيار «العب مجددًا» وعند إغلاق اللعبة. اضغط Play، وسجّل أفضل نتيجة وحاول تحطيمها، ثم اضغط Check.

جرّب بنفسك

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

public enum GameState { Playing, GameOver }

public class GameManager : MonoBehaviour
{
    public static GameManager Instance;

    public float speed = 10f;
    public float speedUp = 0.5f;
    public float maxSpeed = 20f;
    public TMP_Text distanceText;
    public GameObject gameOverPanel;
    public Button restartButton;
    public GameState state = GameState.Playing;
    private float distance;

    void Awake()
    {
        Instance = this;
    }

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

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

        speed = Mathf.Min(speed + speedUp * Time.deltaTime, maxSpeed);
        distance += speed * Time.deltaTime;
        distanceText.text = "Distance: " + Mathf.FloorToInt(distance) + " m";
    }

    public void GameOver()
    {
        state = GameState.GameOver;
        speed = 0f;
        gameOverPanel.SetActive(true);
    }

    void Restart()
    {
        SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
    }
}

جميع دروس بناء ألعاب حقيقية