טעינה עם ערך ברירת מחדל
חלק מהיחידה בניית משחקים אמיתיים במסלול ה-Unity של Coddy. שיעור 23 מתוך 60.
קריאה של מפתח שמעולם לא נשמר מחזירה 0, ו־0 הוא ערך התחלתי לא טוב עבור ערכים מסוימים. במשחק מרוצים, השחקן יכול לבחור כמה יריבים ממוחשבים ישתתפו במרוץ, ושחקן חדש אמור להתחרות נגד 3. כל קריאה ל־Get מקבלת ארגומנט שני, ערך ברירת המחדל, שאותו היא מחזירה כשהמפתח חסר:
int rivals = PlayerPrefs.GetInt("Rivals", 3);
string driver = PlayerPrefs.GetString("Driver", "Rookie");לאחר שהשחקן שומר 0 יריבים כדי להתאמן לבד, GetInt("Rivals", 3) מחזירה 0: ערך ברירת המחדל משמש רק כשמפתח חסר. לכן if (rivals == 0) rivals = 3; היא דרך שגויה לקביעת ערך ברירת מחדל. היא לא יכולה להבחין בין 0 שנשמר לבין מצב שבו לא נשמר דבר, ומחזירה 3 יריבים לכל מרוץ אימון.
PlayerPrefs.HasKey(key) בודקת אם מפתח נשמר אי פעם, בלי קשר לערכו, וכך היא מבחינה בין משחק ראשון למשחק מאוחר יותר. המשחק הזה מברך נהג חדש:
void Start()
{
if (!PlayerPrefs.HasKey("Driver"))
{
Debug.Log("First race! Pick a name in the garage.");
}
string driver = PlayerPrefs.GetString("Driver", "Rookie");
Debug.Log("Driver: " + driver);
}בדקו באמצעות HasKey לפני כל קוד ששומר את המפתח: החל מהשמירה הראשונה ואילך, היא מחזירה true עד שהמפתח מוסר באמצעות PlayerPrefs.DeleteKey.
אתגר
בינוניתן לשחקן חדש 5 קרדיטים בחינם וברכת ברוכים הבאים.
- ב־
Start(), טען עם ערך ברירת מחדל:credits = PlayerPrefs.GetInt("Credits", 5);. - החלף את
welcomeText.SetActive(false);ב־welcomeText.SetActive(!PlayerPrefs.HasKey("Credits"));.
לחץ על "שחק" ושחק במשחק, ואז על עצור ועל "שחק": ברכת ברוכים הבאים נעלמת. ואז לחץ על "בדיקה".
נסו בעצמכם
using UnityEngine;
using TMPro;
public class ArcadeCredits : MonoBehaviour
{
public TMP_Text creditsText;
public GameObject welcomeText;
private int credits;
void Start()
{
credits = PlayerPrefs.GetInt("Credits");
welcomeText.SetActive(false);
ShowCredits();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space) && credits > 0)
{
credits--;
PlayerPrefs.SetInt("Credits", credits);
PlayerPrefs.Save();
ShowCredits();
}
}
void ShowCredits()
{
creditsText.text = "Credits: " + credits;
}
}
כל השיעורים ביחידה בניית משחקים אמיתיים
10פרויקט: משחק פלטפורמה תלת־ממדי
המסלולפלטפורמות נעותתרגלו בעצמכם: Unity אונליין