التحميل بقيمة افتراضية
جزء من قسم إنشاء ألعاب حقيقية في رحلة 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;
}
}
جميع دروس إنشاء ألعاب حقيقية
4المشاهد والمستويات
تحميل مشهدإعادة تشغيل المستوىالمستوى التاليالاحتفاظ بالبيانات بين المشاهدمراجعة: اختيار المستوى10مشروع: لعبة منصات ثلاثية الأبعاد
المسارمنصات متحركة2الأزرار والشاشات
الأزرار وonClickالتعبيرات Lambdaالربط في Inspectorتشغيل اللوحات وإيقافهاأشرطة الصحةمراجعة: متجر الترقيات5الحفظ باستخدام PlayerPrefs
حفظ رقمالتحميل بقيمة افتراضيةأعلى نتيجةحفظ الإعداداتمراجعة: العملات في البنك6مشروع: عدّاء لا نهاية له
ثلاثة مساراتعقبات أمامكتدرّب بنفسك: Playground لـ Unity