إعادة تشغيل المستوى
جزء من قسم إنشاء ألعاب حقيقية في رحلة Unity على Coddy. الدرس 18 من 60.
أسرع طريقة لإعادة ضبط مستوى هي تحميله مرة أخرى. تعيد SceneManager.GetActiveScene() المشهد المفتوح الآن، واسمه name (أو buildIndex) هو ما يأخذه LoadScene. يستدعي زر إعادة التشغيل هذا في لوحة انتهاء اللعبة:
public void Restart()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}تحذف Unity المشهد المفتوح وتنشئه من جديد من ملف المشهد. يعود كل كائن إلى الموضع الذي حدده له المشهد، بما في ذلك الصندوق الذي أسقطه اللاعب، وتعود قيمة Inspector لكل حقل، ويُشغَّل Awake وStart من جديد. لا حاجة إلى كتابة أي كود لإعادة الأشياء واحدًا تلو الآخر. ولأن الزر يطلب المشهد النشط بدلًا من اسم مثل "Level3"، يعيد النص البرمجي نفسه تشغيل أي مستوى يوضع فيه.
الحقل static ليس جزءًا من المشهد: فهو يتبع الفئة، لذا تتركه إعادة التحميل كما كان. يحتفظ private static float bestTime; بأفضل وقت عبر مرات إعادة التشغيل، بينما يبدأ private float time; العادي من جديد من 0 مع المشهد الجديد. كما أن GameManager.Instance ثابت؛ فبعد إعادة التحميل، يظل يشير إلى GameManager الذي دُمّر حتى تعيّنه Awake الخاص بالنسخة الجديدة.
التحدي
سهلينبغي أن تؤدي السقطة إلى إعادة بدء المستوى الذي يوجد فيه اللاعب وإحصاء السقطة.
- أضف
using UnityEngine.SceneManagement;وغيّر العداد إلىprivate static int falls;، حتى يحتفظ بقيمته عند إعادة تحميل المستوى. - في
Update()، عندما يكونplayer.position.y < fallY، نفّذfalls++;وحمّلSceneManager.GetActiveScene().name.
اضغط على «العب» وامشِ عن حافة في كلا المستويين: Falls: 1، ثم Falls: 2. ثم اضغط على «تحقق».
جرّب بنفسك
using UnityEngine;
using TMPro;
public class LevelRestart : MonoBehaviour
{
public Transform player;
public TMP_Text fallsText;
public float fallY = -3f;
private int falls;
void Start()
{
fallsText.text = "Falls: " + falls;
}
void Update()
{
// عند النزول تحت fallY: احسب السقوط وأعد تشغيل المستوى الذي يوجد فيه اللاعب
}
}
جميع دروس إنشاء ألعاب حقيقية
4المشاهد والمستويات
تحميل مشهدإعادة تشغيل المستوىالمستوى التاليالاحتفاظ بالبيانات بين المشاهدمراجعة: اختيار المستوى10مشروع: لعبة منصات ثلاثية الأبعاد
المسارمنصات متحركة2الأزرار والشاشات
الأزرار وonClickالتعبيرات Lambdaالربط في Inspectorتشغيل اللوحات وإيقافهاأشرطة الصحةمراجعة: متجر الترقيات5الحفظ باستخدام PlayerPrefs
حفظ رقمالتحميل بقيمة افتراضيةأعلى نتيجةحفظ الإعداداتمراجعة: العملات في البنك6مشروع: عدّاء لا نهاية له
ثلاثة مساراتعقبات أمامكتدرّب بنفسك: Playground لـ Unity