Menu
CoddyTech

ניקוד שיא

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

שיא הניקוד הוא התוצאה הטובה ביותר בכל המשחקים ששוחקו, ולכן הוא נשמר ב־PlayerPrefs, ומשתנה רק כשמשחק משיג תוצאה טובה ממנו. שולחן הפינבול הזה בודק את הניקוד כשכדור המשחק האחרון מתנקז:

void GameOver()
{
    int best = PlayerPrefs.GetInt("PinballBest", 0);
    if (score > best)
    {
        PlayerPrefs.SetInt("PinballBest", score);
        PlayerPrefs.Save();
        Debug.Log("New high score: " + score);
    }
}

ההשוואה היא מה שהופך את התוצאה לשיא ניקוד. בלעדיה, משחק עם 300 נקודות אחרי שיא של 5000 ישמור 300, והשיא יימחק. השווה לשיא השמור, ולא למשהו שמתחיל ב־0 בכל משחק: שדה שלא נטען בו שום דבר הוא 0 אחרי כל הפעלה מחדש, ולכן כל ניקוד ינצח אותו. score > best שומר על השיא הקודם במקרה של תיקו, ואילו score >= best היה מחשיב תיקו כשיא ניקוד חדש.

כדי להציג את שיא הניקוד במהלך המשחק, טען אותו לשדה בתוך Start() והצג את ערך השדה. כשמשחק משיג תוצאה טובה ממנו, עדכן יחד את השדה, את PlayerPrefs ואת הטקסט, כך שהמסך והערך השמור לעולם לא יראו תוצאות שונות.

challenge icon

אתגר

בינוני

משאבת בלונים: החזק את Space כדי להזרים אוויר לבלון, 20 נקודות לשנייה, ושחרר כדי לצבור את הנקודות. אם תנפח מעבר ל-100, הבלון יתפוצץ ותצבור 0 נקודות. פעולת הניפוח, הפיצוץ והניקוד כבר כתובים, וכשהסיבוב מסתיים, EndRound() נקראת פעם אחת, עם ניקוד הסיבוב ב-points. הוסף שיא ניקוד, שנשמר תחת המפתח BestPoints:

  • ב-Start(), טען את השיא לתוך best (0 עבור שחקן חדש), כדי ש-ShowBest() תציג אותו.
  • ב-EndRound(), כאשר points עולה על השיא, שמור אותו, הצג אותו והצג את newBestText. סיבוב שלא שובר את השיא לא משנה דבר.

לחץ על Play ונפח כמה בלונים (Stop ואז Play מתחילים סיבוב חדש), ואז לחץ על Check.

נסו בעצמכם

using UnityEngine;
using TMPro;

public class BalloonPump : MonoBehaviour
{
    public TMP_Text pointsText;
    public TMP_Text bestText;
    public GameObject newBestText;
    public float pumpRate = 20f;

    private float air;
    private int points;
    private int best;
    private bool roundOver;

    void Start()
    {
        ShowBest();
    }

    void Update()
    {
        if (roundOver) return;

        if (Input.GetKey(KeyCode.Space))
        {
            air += pumpRate * Time.deltaTime;
            transform.localScale = Vector3.one * (1f + air / 50f);
            pointsText.text = "Points: " + Mathf.FloorToInt(air);
            if (air > 100f)
            {
                points = 0;
                pointsText.text = "Pop! Points: 0";
                GetComponent<Renderer>().enabled = false;
                roundOver = true;
                EndRound();
            }
        }
        else if (Input.GetKeyUp(KeyCode.Space))
        {
            points = Mathf.FloorToInt(air);
            pointsText.text = "Points: " + points;
            roundOver = true;
            EndRound();
        }
    }

    void EndRound()
    {
        // שמור כאן שיא חדש
    }

    void ShowBest()
    {
        bestText.text = "Best: " + best;
    }
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

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