Menu
CoddyTech

הריצה הטובה ביותר

חלק מהיחידה בונים משחקים אמיתיים במסלול ה-Unity של Coddy. שיעור 32 מתוך 56.

challenge icon

אתגר

בינוני

השלב האחרון: זכרו את הריצה הטובה ביותר. השאירו את כל מה שהיה בשיעורים הקודמים. ב־canvas יש BestText בפינה הימנית העליונה, ובחלונית יש NewBestText מוסתר (New best!); הסצנה מציבה אותם בשני שדות חדשים של GameManager, public TMP_Text bestText; ו־public GameObject newBestText;. שמרו את התוצאה הטובה ביותר תחת המפתח BestRun, במטרים שלמים:

  • ב־Start(), טענו את התוצאה הטובה ביותר (0 עבור שחקן חדש) והציגו אותה כך: Best: 57 m.
  • ב־GameOver(), כאשר מספר המטרים השלמים של הריצה, Mathf.FloorToInt(distance), גדול מהתוצאה הטובה ביותר, שמרו את התוצאה החדשה, הציגו אותה והציגו את newBestText. ריצה קצרה יותר לא משנה דבר.

התוצאה הטובה ביותר נשמרת גם לאחר לחיצה על Run again וגם לאחר יציאה מהמשחק. לחצו על 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);
    }
}

כל השיעורים ביחידה בונים משחקים אמיתיים