![Unity Game Engine: إنشاء كائنات اللعبة باستخدام Prefabs Unity Game Engine: إنشاء كائنات اللعبة باستخدام Prefabs](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjC7npkt8iEEjkPxpB729CHGRATRivbr0HzrJyzlS4a0s66adanlaFFSXlTpWRs5Z8GmB43D-vcHNUxMEjyAbaht6MunG1PsLCdSupTKvd7AAPhcoQXwgV3aacFdxpvA2CFyR-0hVAL-_Ch/s16000/Prefab.jpg)
Unity Game Engine: إنشاء كائنات اللعبة باستخدام Prefabs
الآن بعد أن فهمت بعض أساسيات العمل مع Unity ، وقمت بعمل لعبة أو اثنتين بنفسك ،
دعنا نحاول التعمق أكثر ، أليس كذلك؟ بعد كل شيء ،
لقد كشطنا للتو سطح جبل الجليد الذي يمثل يونيتي Unity!
إذن ما الذي يناسب شخصية الكائن في Unity Game Engine ؟
الآن، سنكون فهم المفاهيم الأكثر أساسية تتعلق Unity ، أكثر تركيزا على
gameObjects و منازل جاهزة Prefabs.
فهم المباني الجاهزة Prefabs والتشكيل
حسنًا ، Prefab تبدو الكلمة مخيفة بعض الشيء ، أليس كذلك؟
لا تقلق ، فهي ليست في الواقع أحد أفضل أصدقاء مصمم اللعبة عندما يتعلق
الأمر بإنشاء كائنات اللعبة في الوقت الفعلي.
إذن ما هي بالضبط المباني الجاهزة Prefabs ؟
حسنًا ، المبنى الجاهز هو في الواقع مخطط أو قالب لجسم gameObject معين.
نحن نعلم أن هذا أمر محير لفهمه في البداية ، لذلك دعنا نأخذ مثالًا أساسيًا للغاية.
تخيل أننا نصنع لعبة إطلاق نار في الفضاء ، وهذه هنا ، هي شخصية معادية.
![Unity Game Engine: إنشاء كائنات اللعبة باستخدام Prefabs Unity Game Engine: إنشاء كائنات اللعبة باستخدام Prefabs](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGqziOB8QnBZ6LZmR8OBfHW3XF5qebCUW3ziJLPcNYfLEi9_xPNdNrh3qbeBdAPRTj4NkXyVgrWkXIaI8BvhpTK9WGHLyLZ8WWHQBniNDZQHrYrJwMOX2U_9xZfYCo6L61NHTSGJ60CJDY/s16000/Prefabs.jpg)
الآن ، إذا أردنا بناء مشهد لعبة في Unity مع شخصيتنا الرئيسية وعدو ، فسيبدو الأمر كما يلي:
![Unity Game Engine: إنشاء كائنات اللعبة باستخدام Prefabs Unity Game Engine: إنشاء كائنات اللعبة باستخدام Prefabs](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBGwHjOpwYeVq8b46vSfI6jyGF_44clxU1IWqXhin6fBRwsIvdK1gTy2aWKZujFmdEB2po3ItfcZxilr-LpU8v048OxctujWYtZdv2XcZs1beP8noiT6OKYJc84L64FO-3BMit74eDjjuv/w320-h130/Prefabs+2.webp)
بالتأكيد ، هذا جيد تمامًا عندما يكون لديك عدو واحد ، ولكن ماذا لو كنت تريد الكثير منهم؟
ليس 2 أو 3 ، افترض مثل 15 أو 20.
بصفتك مبتدئًا في تعلم Unity ، قد تفكر في شيء على غرار هذه الأسطر:
استخدام نفس الأصل ، عدة مرات عن طريق إنشاء نسخ.
![Unity Game Engine: إنشاء كائنات اللعبة باستخدام Prefabs Unity Game Engine: إنشاء كائنات اللعبة باستخدام Prefabs](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1TypR0GIMC6Ai_FgCpgUr7_ftvAClGcU2RkrfPOSbsXUcYSo0v40RPi4sQMfj8sp8klVkZqSyZnpQ_PXJ6Cux5BhkcVKTFiksl3rH-8YXzQ6hwqn5h8a2hKdBErhxy1Oa1luyOJoYcSnr/w320-h128/Prefabs+3.webp)
حسنًا ، هذا أيضًا حل قابل للتطبيق ، كما نفترض ، ولكن ماذا لو كان لكل كائن
ذكاء اصطناعي خاص به وخصائصه المخصصة؟ هل حقا مثل، يمر عناء إضافة
جسم جاسئ و المصادمات إلى كل شبح واحد؟
ماذا لو أردت إنشاء المزيد من هؤلاء الأعداء ، أثناء اللعب وليس أثناء عملية صنع المشهد؟
لا نوصي بجدية بوضع كل عدو بنفسك ، أو قد تصبح لعبتك مملة ومتوقعة حقًا.
ماذا لو تمكنا من تحديد عدو واحد ، وكان لدينا شيء يولد نسخًا من ذلك العدو ،
لأنهم جميعًا متماثلون؟ حسنًا ، المبنى الجاهز هو ما يحل ذلك بالضبط.
إن PreFab هو تعريف كائن gameObject الذي نريد إنشاؤه ،
وينتج نسخة طبق الأصل من كائن gameObject المحدد ، متى احتجت إليه ، وأينما كنت في حاجة إليه.
يثبت هذا أنه مفيد للغاية عندما تحتاج إلى إنشاء كائنات gameObjects
أثناء الطيران ، مثل الرصاص والأجانب والعملات المعدنية وما إلى ذلك ،
نظرًا لأن Unity تقوم بمعظم العمل هنا ، مما يجعل gameObjects متاحة لنا على الفور.
استخدام المباني الجاهزة لإنشاء كائن اللعبة في وقت التشغيل
دعونا نستخدم هذا. سنبدأ بتمرين بسيط للغاية ، لإنشاء صندوق في كل مرة
نضغط فيها على مفتاح المسافة . بادئ ذي بدء ، لنقم بإنشاء مولد .
الآن نحن لسنا بحاجة حقًا إلى مولّد للحصول على رسومات ، فقط لعبة فارغة كائن كائن سيفي بالغرض.
لذلك ، ما تفعله هو النقر بزر الماوس الأيمن في التسلسل الهرمي ، والنقر فوق إنشاء فارغ .
![Unity Game Engine: إنشاء كائنات اللعبة باستخدام Prefabs Unity Game Engine: إنشاء كائنات اللعبة باستخدام Prefabs](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJKDFGMYQeD91OjKA3hC2rDMponj0uceqxq7XRwvzaTq5RXZUvI6ACgl5kkqfycfanAwSS4-uEAHKi951a652IE_AXzE3G5TMo1av5aJBDbSeud-lBRr2n6-juLEve79sYqvI2xA3MBPuj/w203-h320/Prefabs+4.webp)
يجب أن ترى كائن GameObject جديدًا يظهر في التسلسل الهرمي.
لكن لا شيء يظهر على الشاشة.
نظرًا لأن هذا كائن gameObject فارغ ، فلا يحتوي على أي مكونات باستثناء Transform .
تذكر أن Sprite Renderer هي أيضًا مكون. نظرًا لأن gameObject
هذه لا تحتوي على مثل هذا المكون ، فهي ببساطة لا تقدم أي شيء.
إنه ببساطة هناك. لعبة فارغة - الكائنات مفيدة حقًا لأشياء مثل البويضات
والنقاط المرجعية ، لأنها غير مرئية أثناء اللعب.
![Unity Game Engine: إنشاء كائنات اللعبة باستخدام Prefabs Unity Game Engine: إنشاء كائنات اللعبة باستخدام Prefabs](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEqgM-LWMTNGM_7TPYV-hYB1B9GwVM0dXSMmUSI1EyB1IjOzyxJqIirmhXJ7vzjaagSfxkQxTAVrasFibI47zzQk464Z9W5SfXCwtWiAq1Aro6wkQfRUcbjyq3-ozfWw75EiY9t9RNt9P2/s16000/Prefabs+5.jpg)
يمكنك دائمًا التحقق من مكان وجود كائن gameObject الفارغ بمجرد
النقر على كائن gameObject في التسلسل الهرمي.
يجب أن يظهر لك بعد ذلك موقع كائن اللعبة بدائرة شفافة .
على أي حال ، دعنا نعيد تسمية كائن لعبتنا الفارغة إلى Generator ، فقط حتى نعرف ما هو عليه بالفعل.
سنتركك لتكتشف كيفية إعادة تسمية gameObject ، الأمر بسيط للغاية.
الآن ، دعنا ننشئ المربع الفعلي للإنشاء.
قم بإنشاء كائن باستخدام قائمة الرموز الافتراضية التي استخدمناها لإنشاء هذا الحصار
مرة أخرى في البرامج التعليمية السابقة.
(ليس بالضرورة أن يكون صندوقًا ، يمكنك استخدام أي كائن.
نحن نستخدم النقش المربّع الافتراضي من أجل البساطة).
![Unity Game Engine: إنشاء كائنات اللعبة باستخدام Prefabs Unity Game Engine: إنشاء كائنات اللعبة باستخدام Prefabs](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheiIqVHuhbVtmlKBCu1VSuV3YBqtUJwXLoyVszC0zgowMrDhigv27oC2C_kz6V5otGJ7zYJgmaDf7tWSR6wF4g5GzI1h8dzYgoj1-pC8gO_fbuRUGdpXuxmFeeBGl7F5m6MnwoVR5sisF0/s16000/Prefabs+6.jpg)
الآن ، دعنا نضيف a Rigidbody2Dإلى المربع ، فقط لإعطائه وزنًا حتى يسقط عند إنشائه.
هذا يعني أننا لن نقوم بتعديل مقياس الجاذبية.
(أو إذا كنت من النوع الدائم ، فاضبطه على أي قيمة بخلاف الصفر).
اضغط على زر التشغيل لاختبار الصندوق الخاص بك.
إذا سقطت ، فأنت على الطريق الصحيح.
![Unity Game Engine: إنشاء كائنات اللعبة باستخدام Prefabs Unity Game Engine: إنشاء كائنات اللعبة باستخدام Prefabs](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFwO5IxOuzVbhEohf-iSOeO9iifN3tgjFwuPFXn6sT7n26NxyYO_mNYjQzVrZDJ7XZs6IckS5P8hcN_jQn95yJ_tauf1TfbhFZiiR7pFLBHUF9CJ0fYIRv0y2e9yLo-6OJS9kequwOgZwB/w320-h157/Prefabs+7.webp)
الآن ، هل تتذكر كيف أضفت الكائن إلى المشهد مرة أخرى عندما كنت تبدأ؟
قمت بسحب الكائن من الأصول إلى التسلسل الهرمي .
( يمكنك ايضا الاطلاع على كيفية تحريك الكائب باستخدام السكربت C-Script ) .
إنشاء المباني الجاهزة Prefabs هو عكس تلك العملية.
تقوم بسحب كائن gameObject الموجود من التسلسل الهرمي إلى الأصول .
تقوم Unity بعد ذلك بإنشاء قالب جاهز لهذا الكائن gameObject في المجلد الذي قمت بسحبه إليه.
لذلك ، نظرًا لأننا نريد إنشاء قالب للمربع ،
فسنقوم فقط بسحب الكائن المربع من التسلسل الهرمي إلى مجلد المباني الجاهزة Prefabs .
![Unity Game Engine: إنشاء كائنات اللعبة باستخدام Prefabs Unity Game Engine: إنشاء كائنات اللعبة باستخدام Prefabs](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtHMXZQv4u6lMa-x8iPb0yfk1wjBxlW23gRO6OomK6N1u-SNvsPPAFKl-JbRyQOl7IyAki6YuR5qrnOCCvKNVhMmmnjHoWKfpTENihRA4PZbFlAubsd_PDObh7yAbXO8awGgn4-aJsYoia/w320-h149/Prefabs+8.webp)
يجب أن ترى شيئًا جديدًا يظهر في مجلد المباني الجاهزةPrefabs .
إنها نفس الصورة بالضبط للمربع ، لكنها تظهر في حاوية رمادية.
هذا هو المبنى الخاص بك! سهل أليس كذلك؟ الآن ، لإنشاء مثيل من هذا المبنى الجاهز
كلما تم الضغط على مفتاح المسافة ، سنحتاج إلى كتابة نص صغير للمولد .
لغرض وحيد هو إنشاء مربع عندما تضغط على مفتاح المسافة ، فإن الكود التالي مثالي :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Generator : MonoBehaviour
{
public GameObject boxToGenerate;
void update()
{
// When spacebar is hit
if(Input.GetKeyDown(KeyCode.Space))
{
// instantiate the box object
Instantiate(boxToGenerate);
}
}
}
تتذكر كيفية إنشاء نص جديد وإعادة تسميته ، أليس كذلك؟
إذا لم يكن كذلك ، فتحقق من مقالاتنا التعليمية السابقة.
سنقوم أيضًا بتسمية البرنامج النصي الخاص بنا باسم Generator.
لاحظ كيف أن Start () الطريقة مفقودة هنا.
التخلص من عمليات التفريغ Start () و Update () الطرق أمر يجب عليك القيام به ،
ويوصى به تمامًا عند التطوير في Unity.
السطر 7: يجب أن تكون على دراية بهذا السطر الآن.
إنه إعلان Unity أن تطلب منها إنشاء كائن gameObject ،
من خلال إنشاء هذه الفتحة في المحرر الذي رأيناه سابقًا.
![Unity Game Engine: إنشاء كائنات اللعبة باستخدام Prefabs Unity Game Engine: إنشاء كائنات اللعبة باستخدام Prefabs](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnzojMpRnKZcMc2mGiROc2LQfPAk3G3cArlzl1Gjyrui1FC_wufxkeJNMjGi8JeDwy66Tkka6JntWMmkR25TAxbgiHsGWv25eouka02iIamCUp-rMo2aTYhJMfg79AmunjrUN-KZ47uTrR/s16000/Prefabs+9.jpg)
السطر 11: هذا به بعض الأشياء الممتعة التي تحدث.
يحتوي Input الفصل ، كما نعلم ، على تعريفات لطرق مختلفة لتقديم مدخلات للعبة.
وهذا يشمل أزرار الماوس ، مفاتيح لوحة المفاتيح .
في حالتنا ، نحن نستخدم طريقة GetKeyDown .
هذا يكتشف عندما تم الضغط على مفتاح للتو. الطرق الأخرى للوحات المفاتيح هي
GetKey (يكتشف الضغط على المفتاح الذي يتم الضغط عليه بعد ذلك) و
GetKeyUp (يكتشف المفتاح الذي تم تحريره للتو).
داخل طريقة GetKeyDown ، لدينا تعداد كمعامل ، KeyCode التعداد.
إنها في الأساس قائمة تعداد جميع المفاتيح الموجودة على لوحة المفاتيح.
السطر 12: كما يمكنك التخمين ، هذا هو الخط السحري الرئيسي ، كما كنا نسميه
و Instantiate الأسلوب هو أسلوب في GameObject فئة (مذكرة العاصمة G)،
والتي لديها عدد قليل من الاختلافات مثقلة.
ومع ذلك ، فإن المعلمة الرئيسية عبر كل هذه الأحمال الزائدة هي كائن gameObject
الفعلي لإنشاء مثيل أو إنشاء.
نظرًا لأننا نريد إنشاء المربع الذي نقوم بتوصيله بالمحرر ،
فسنقدم boxToGenerate المعلمة كمعامل.
ما عليك سوى حفظ هذا البرنامج النصي وإرفاقه في Generator gameObject في المحرر.
الآن ، لملء خانة Box To Generate التي تظهر في خصائص البرنامج النصي ،
سنقوم ببساطة بالنقر فوق نقطة الدائرة واختيار المربع الجاهز الخاص بنا .
بدلاً من ذلك ، يمكنك فقط سحب وإسقاط الصندوق الجاهز في الفتحة.
ما يفعله هذا هو إخبار Unity بما يجب أن تولده. boxToGenerate هو ببساطة
اسم متغير gameObject ، ولا يزال هذا المتغير بحاجة إلى شيء ما.
احفظ عملك في مشهد جديد ، وانقر فوق تشغيل.
إذا سارت الأمور على ما يرام ، يجب إنشاء مربع جديد عندما تضغط على مفتاح المسافة.
![Unity Game Engine: إنشاء كائنات اللعبة باستخدام Prefabs Unity Game Engine: إنشاء كائنات اللعبة باستخدام Prefabs](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiXDUKtKLnK7xwF0f0ApnwB1A-p3FXkQEmCjmJM2y0BffiZ-Nrf4ciudWHENgAo7W67hpTKXH2s6S_oRa_Q4Z3b0zjJIcDuEspFHWvoPWBGJheh16yJDvk_g3zX5UoGX7RFA5o440y4Lvt/w320-h175/Prefabs+10.webp)
إذا انتبهت إلى التسلسل الهرمي ، فستلاحظ أنك تنشئ صندوقًا جديدًا (استنساخ) في كل مرة.
على الرغم من سقوطهم عن الشاشة ، إلا أنهم ما زالوا في التسلسل الهرمي.
إليك المكان الذي يجب أن نحذرك فيه من عدم توليد الكثير منها ،
نظرًا لأنها ستسقط إلى أجل غير مسمى وقد يبدأ الكثير منها في تأخير البرنامج.
سأشرح كيفية تدمير الأشياء لاحقًا.