Unity Game Engine: ادارة المشاهد و تغييرها في Unity 3D
أكثر ما تستخدمه مكتبة إدارة المشهد هو القفز بين المشاهد.
إنها واحدة من أبسط الأشياء التي يجب القيام بها ولكنها ضرورية لإنشاء لعبة
دعونا الآن نرى كيف يتم ذلك بالفعل
الآن في مجلد الأصول ، أنشئ مشهدين جديدين وأطلق عليهما اسم "Scene1" و "Scene2" .
لإنشاء مشهد جديد ، انقر بزر الماوس الأيمن في منطقة لوحة الأصول وحدد إنشاء> مشهد.
ما نهدف إليه هنا هو أننا يجب أن نكون قادرين على التخطي
بين المشاهد بضغطة زر (عنصر واجهة المستخدم).
يمكننا القيام بذلك بعدة طرق ولكن لتسهيل الفهم ، سنستخدم أبسط الطرق.
سنقوم بإنشاء كائن SceneChanger الذي سيتعامل مع كل كود تغيير المشهد (مهما كان القليل منه).
بشكل عام أيضًا عند تغيير مشهد من مشهد إلى آخر ، يتم إتلاف جميع حالات
عناصر اللعبة والنصوص وما إلى ذلك التي تنتمي إلى
هذا المشهد ويتم تحميل العناصر الموجودة في المشهد الجديد.
هناك طريقة أخرى وهي استخدام وظيفة ()DontDestroyOnLoad
التي ستحافظ على مرجع كائن عبر تغييرات المشهد ولكن هذا جيد يمكن التطرق إليه في مقال تعليمي آخر.
إنشاء كائن SceneChanger والمباني الجاهزة Prefab
حسنًا ، بالعودة إلى Unity ، في علامة التبويب Hierarchy في "Scene1" ،
قم بإنشاء كائن لعبة فارغ وقم بتسميته "SceneChanger" .
تأكد من أن موضعها ودورانها عند <0،0،0> و
أن المقياس عند <1،1،1> في التحويل .
لا يؤثر ذلك على العمل ولكن من الممارسات الجيدة الاحتفاظ بكائنات GameObject
التي تمتلك تحويلها فقط ليتم وضعها في الأصل.
الآن إضافة برنامج نصي إلى "SceneChanger" الكائن،
وكذلك تسميته "SceneChanger". .
افتح الآن البرنامج النصي في MonoDevelop / Visual Studio وأدخل الكود التالي فيه:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class SceneChanger : MonoBehaviour
{
public void ChangeScene(string sceneName)
{
SceneManager.LoadScene (name);
}
public void Exit()
{
Application.Quit ();
}
}
في هذا الكود ، قمنا بتضمين مكتبة UnityEngine
.SceneManagement التي تسمح لنا باستخدام فئة SceneManager .
في وظيفة ChangeScene (اسم السلسلة) ، نأخذ إدخال سلسلة من اسم اسم المشهد .
ثم يتم تمرير هذا إلى وظيفة ()SceneManager.LoadScene .
تقوم هذه الوظيفة بتحميل المشهد الجديد المحدد باسمه (إن وجد).
في وظيفة ()Exit ، نستخدم وظيفة ()Application.Quit .
هذه الوظيفة لها المهمة الأساسية المتمثلة في إنهاء أحد التطبيقات ،
أي وظيفة مماثلة لزر X الأحمر أو زر الإغلاق في أعلى يمين الشاشة
هنا قمنا بإنشاء كائن.
الآن لخلق لها الجاهزة ، ببساطة حدد الكائن في التسلسل الهرمي و
السحب أسقطه داخل الأصول مجلد في علامة التبويب Project .
بعد القيام بذلك سترى مكعب أزرق بنفس اسم الكائن. هذا هو الكائن الجاهزة.
الآن احفظ المشهد وانقر مرتين على "Scene2" .
في هذا المشهد ، ما عليك سوى سحب وإسقاط مبنى SceneChanger ا
لجاهز في منفذ العرض أو علامة التبويب التسلسل الهرمي .
سيتم إنشاء مثيل SceneChanger .
إنشاء واجهة المستخدم والمباني الجاهزة Prefab
لقد أنشأنا كائن SceneChanger في القسم السابق.
الآن سنقوم بإنشاء واجهة المستخدم.
في واجهة المستخدم ، سيكون لدينا كائن نصي يذكر
اسم المشهد وزرًا سيغير المشهد بالنسبة لنا.
لذلك، انقر على الحق في التبويب التسلسل الهرمي و تحديد UI> لوحة .
قم بتغيير لون اللوحة إلى ما تريد .
مرة أخرى انقر بزر الماوس الأيمن على علامة التبويب التسلسل الهرمي و تحديد UI> نص .
قم بتغيير حجمه ووضعه في أي مكان تريده (جرب بنفسك).
مرة أخرى، انقر على الحق في التبويب التسلسل الهرمي و تحديد UI> زر .
قم بتغيير حجمه ووضعه في أي مكان تريده .
يجب أن تبدو النتيجة النهائية الخاصة بك مثل هذا
الآن قم بتغيير النص إلى "هذا هو المشهد 1" .
قم أيضًا بتغيير النص الموجود في الزر إلى "تغيير المشهد"
(ابحث عن كائن النص للزر باعتباره عنصرًا فرعيًا لكائن الزر).
والنتيجة هي على النحو التالي:
الآن حدد كائن الزر في التسلسل الهرمي .
في علامة التبويب المراقب ، انقر فوق رمز علامة الجمع في مكون الزر (البرنامج النصي) .
نحصل على هذا في نافذة الزر (البرنامج النصي).
الآن قم بسحب وإسقاط كائن SceneChanger من علامة التبويب Hierarchy
في مساحة مرجع الكائن (المميزة باللون الأحمر) .
الآن حدد القائمة المنسدلة للوظيفة (مظللة باللون الأحمر).
من القائمة المنسدلة ، حدد SceneChanger> ChangeScene (سلسلة) .
الآن سترى مساحة فارغة تحت قائمة الوظائف المنسدلة .
اكتب فيه "Scene2" . هنا ما قمنا به هو تحديد كائن SceneChanger
الخاص بنا والوصول إلى وظيفة ()ChangeScene . "Scene2" هو المدخل.
الآن عندما يتم الضغط على الزر ، سيتم استدعاء وظيفة
()ChangeScene وسيتغير المشهد إلى "Scene2" .
افعل الآن الشيء نفسه مع "Scene2" ولكن اكتب "Scene1"
كمدخل وتغيير النص في Scene2 وفقًا لذلك .
أضف الآن المشاهد إلى Build Settings في قائمة File .
إن القيام بذلك أمر حتمي لأنه بدون هذه Unity لن تتعرف على المشاهد ولن يحدث أي انتقال بينها.
الآن عندما تضغط تشغيل. سيؤدي النقر فوق الزر إلى تغيير المشهد.
ملاحظة:
لم نجعل وظيفة الخروج كما هو الحال في محاكاة (تشغيل المشهد في Unity )
يتم تجاهل إجراء الخروج.
ومع ذلك ، في بناء حقيقي للعبة يمكننا الخروج باستخدام ()Application ، Exit .