هذه المقالة ستكون مفيدة لمطوري اللعبة المبتدئين. في ذلك ، سأتحدث عن تجربتي الخاصة في تنفيذ التفاعل متعدد المراحل والمشاكل التي واجهتها.
دعنا نتحدث عن فئات ثابتة لتخزين البيانات ، وطرق مختلفة لتحميل المشاهد باستخدام محرك Unity ، وكذلك لمس حالة توصيل Admob بالمشروع. المعلومات المقدمة من الوثائق الرسمية ومجتمع المطورين ودية.
الوضع
تتكون لعبتي من مشهدين - القائمة الرئيسية ، التي يمكن رؤيتها فور التحميل ، وبشكل مباشر ، مشهد اللعبة مع الميكانيكا ، والذي يتم فيه تحميل العنصر المسبق للكائن بناءً على الخيار المحدد. لم يكن بالإمكان دمجها في مشهد واحد ، حيث إن العديد من الكائنات المعقدة مرتبطة بالقائمة ، وهي أكثر ملاءمة للفصل بين الكيانات.
في السابق ، كنت أود فقط استخدام كائن تحكم معين لتخزين البيانات ، ولكن مع تفريغ المشهد ، لم يعد موجودًا.
نقل البيانات (فئة ثابتة)
اتضح أن الوحدة ممتازة في التعامل مع الكود ، حتى لو كانت تكمن في ملف في مجلد البرامج النصية بشكل سلمي ولم يتم إرفاقها بواسطة أحد العناصر لكائن في المرحلة (لم يكن ذلك واضحًا للمبتدئين). على سبيل المثال ، يمكن أن يكون مثل هذا الملف فئة ثابتة من هذا النوع:
using UnityEngine; public static class DataHolder { private static GameObject prefabName; public static GameObject Prefab { get { return prefabName; } set { prefabName = value; } } }
وبالتالي ، تمكنت من حفظ اختيار المستخدم حتى بعد تفريغ المشهد وتحميل مشهد جديد. في البداية ، كان كل شيء يعمل بالضبط مع مشاهد التبديل الصعب.
باستخدام هذه الآلية ، يمكنك أيضًا نقل الإعدادات إلى المشاهد الأخرى من القائمة ، على سبيل المثال ، لغة الترجمة وإعدادات الأصوات والموسيقى وغير ذلك الكثير.
متعدد القيم (إدارة المشهد)
كل شيء يناسبني وهكذا ، حتى تلقيت مهمة الاتصال بمشروع Admob (الإعلان) ، بحيث تم عرض الفيديو مباشرة في بداية مشهد اللعبة. كما اتضح فيما بعد ، هناك بعض التفاصيل الدقيقة: إن طلب مقطع فيديو يستغرق وقتًا كبيرًا ، وليس لديه وقت للوصول عند تبديل المشاهد. لم أكن أرغب في تأخير التأخير الإضافي في المشروع ، خاصة وأن لدينا الكثير من الوقت حتى يتمسك "اللاعب" بالقائمة. ثم اكتشفت أنه ليست هناك حاجة إلى تبديل المشاهد "بجد" ، لأن هناك خيارًا رائعًا للتحميل الإضافي (دون تفريغ المشهد السابق).
أقوم بتحميل مشهد اللعبة باستخدام وحدة تحكم القائمة (المشهد مع القائمة ويظل كائن الإعلان محملاً أيضًا):
SceneManager.LoadScene(1,LoadSceneMode.Additive);
عند الانتهاء من المستوى ، أفرغ مشهد اللعبة بوحدة التحكم في اللعبة (بحيث لا يتعطل في ذاكرتي):
SceneManager.LoadScene(0,LoadSceneMode.Single);
باستخدام مثل هذا المخطط ، يتم تحميل الإعلانات على الفور في بداية التطبيق ، ويمكنك استدعاء عرض الإعلان في أي وقت مطلوب. يمكنك أن تفعل الشيء نفسه مع أي كائنات تحتاج إليها.
المشاكل
لسوء الحظ ، حتى مع التحميل الإضافي للمشاهد ، لن تتمكن من الخوض في كائنات من مشهد آخر. يجب أن يتم نقل الارتباطات إلى الكائنات عبر "وسيط" معين (في حالتي ، تم استخدام نفس الفئة الثابتة).
كن حذرًا عند إنشاء مجموعات جاهزة ، إذا كانت هناك عدة مشاهد نشطة - فبالنسبة لي ، قرروا جميعًا الدخول إلى المشهد الخطأ (المزيد في ذلك الوقت الآخر).