برمجة لعبة مع الوحدة: دليل المبتدئين

برمجة لعبة مع الوحدة: دليل المبتدئين
هذا الدليل متاح للتنزيل كملف PDF مجاني. قم بتنزيل هذا الملف الآن . لا تتردد في نسخ هذا ومشاركته مع أصدقائك وعائلتك.

من السمات المدهشة لاقتصاد الإنترنت ظهور ألعاب الفيديو المستقلة. بمجرد أن أصبح المجال الحصري لاستوديوهات Triple-A بألف رجل وعدة ملايين من الدولارات ، تم تطوير عدد من مجموعات الأدوات التي توفر موارد تطوير الألعاب الحديثة في أيدي الأفراد أو المجموعات الصغيرة المخصصة من المبرمجين والمصممين. لقد ناقشنا سابقًا أفضل الألعاب المستقلة ، لذا تأكد من إطلاعك عليها للحصول على بعض الإلهام فيما يتعلق بما يمكن تحقيقه باستخدام أدوات مثل Unity.





لقد أثبتت فرق تطوير الألعاب المستقلة هذه خفة الحركة وتحمل المخاطر الذي يسمح لهم ، في كثير من الحالات ، بدفع ابتكار اللعب بشكل أسرع من نظرائهم ذوي الميزانيات الكبيرة. تم عرض عدد من العناوين المستقلة الناجحة بشكل صادم في السنوات الأخيرة ، بما في ذلك ماين كرافت و ليمبو ، و سوبر ميت بوي ، وحتى إذا لم تكن بحاجة إلى مهارات لصنع ألعاب مثل هذه ، يمكنك إنشاء لعبة باستخدام Buildbox.





في المشهد سريع التطور لتطوير الألعاب المستقلة ، وحدة برز كمعيار واقعي: تكلفته المنخفضة وسهولة استخدامه ومجموعة ميزاته الواسعة تجعله مثاليًا لتطوير الألعاب بسرعة. الوحدة مرنة للغاية ، حتى أنه يمكنك ذلك اصنع وحدات تحكم الألعاب المخصصة الخاصة بك مع القليل من DIY تعرف كيف!





حتى الاستوديوهات الكبيرة مثل CCP (مطورو عشية على الانترنت ) استخدمه لنمذجة مفاهيم اللعبة بسرعة. توفر Unity 'محرك لعبة في صندوق' - محرك فيزيائي وعرض مزود بخطافات للعديد من لغات البرمجة النصية ، وقابل للتكيف عمليًا مع أي نوع من ألعاب الفيديو.

بينما توفر Unity محررًا مرئيًا للتلاعب ببيئة اللعبة ، فإن Unity ليست أداة إنشاء ألعاب 'بدون برمجة'. يتطلب منك البرمجة لتحقيق النتائج ، ولكنه يمنحك أيضًا أداة أكثر مرونة وقوة من أي برنامج 'صانع ألعاب'.



لن تقوم الوحدة بالعمل نيابة عنك ، لكنها تقلل من حاجز الدخول إلى حد كبير. بدءًا من البداية تمامًا باستخدام C ++ و OpenGL ، قد يستغرق الأمر أيامًا للوصول إلى النقطة التي يتم فيها عرض شيء ما بالفعل على الشاشة. باستخدام Unity ، يستغرق الأمر حوالي عشر ثوانٍ. تضع الوحدة العناصر الأساسية لإنشاء اللعبة في أيدي المبرمجين المبتدئين بطريقة سريعة وبديهية.

سأقوم اليوم بإرشادك خلال كل ما تحتاج إلى معرفته لإنشاء لعبة في Unity ، والتي تنقسم إلى عشرة فصول رئيسية:





§1 – إصدارات الوحدة

§2 –تثبيت الوحدة





§3 – مقدمة موجزة للنموذج الكينوني

§4 –أساسيات الوحدة

§5 - مثال: العناصر الأساسية للعبة

§6 –البرمجة في الوحدة

§7 –مثال: Scripting Pong

§8 – استكشاف التوثيق / تعلم المزيد

§9 –إنشاء لعبتك / تجميعها إلى تطبيق مستقل

§10- ملاحظات ختامية

1. إصدارات الوحدة

تأتي الوحدة في نكهتين أساسيتين: الإصدار المحترف والإصدار المجاني. هناك عدد الاختلافات ، ولكن ، بشكل عام ، يدعم الإصدار المحترف عددًا من التحسينات المرئية (مثل الظلال الناعمة في الوقت الفعلي والمعالجة اللاحقة) ، وعددًا كبيرًا من الميزات الثانوية نسبيًا والتي تعد مفيدة للغاية للألعاب الأكثر تعقيدًا.

ومع ذلك ، بالنسبة لمعظم الألعاب البسيطة نسبيًا التي قد ترغب في إنشائها ، فإن الإصدار المجاني من Unity مناسب تمامًا. سنقوم بتفصيل الاختلافات الرئيسية أدناه بمزيد من التفاصيل للمهتمين.

1.1 التسعير

النسخة المجانية من Unity مجانية بالطبع. ومع ذلك ، هناك بعض القيود: لا يمكن ترخيص الإصدار المجاني من Unity لأي شركة ذات دخل سنوي يزيد عن 100،000 دولار . في حين أن مثل هذه المنظمات خارج نطاق هذا الدليل ، إذا كنت تشك في أنك قد تصبح مثل هذه المنظمة ، فمن الحكمة على الأرجح الظهور في إصدار Pro.

النسخة الاحترافية من Unity هي 75 دولارًا شهر او 1500 دولار للحصول على ترخيص دائم ، وليس له حدود على ما يمكنك فعله بالألعاب التي تم إنشاؤها باستخدامه. تتوفر أيضًا نسخة تجريبية مجانية مدتها 30 يومًا ، والتي سنستخدمها في هذا الدليل ، من أجل تزويدك بنظرة عامة كاملة على الميزات المتاحة قدر الإمكان. يتوفر أيضًا ترخيص طالب لمدة عام واحد من خلال يذاكر ل 129 دولارًا .

1.2 الميزات

هناك العديد من الميزات الغائبة في الإصدار المجاني من Unity. ومع ذلك ، فإن أهم الاختلافات هي كما يلي: يفتقر الإصدار المجاني من Unity إلى عدد من خيارات العرض التي تسمح بألعاب ذات مظهر أفضل وتشغيل أسرع (دعم LOD ، معالجة ما بعد مساحة الشاشة ، تظليل متقدم ، الوقت الحقيقي soft soft الظلال والعرض المؤجل). كما أنه يفتقر إلى كامل نظام الرسوم المتحركة الميكانيكية وبعض أدوات الذكاء الاصطناعي.

بشكل عام ، بالنسبة للمشاريع المعقدة واسعة النطاق ، أو المشاريع التي يكون فيها الأداء الرسومي مهمًا ، فإن الإصدار المحترف يستحق العناء. أستخدم الإصدار المحترف ، لأنني أقوم بتطوير ألعاب الواقع الافتراضي لـ Oculus Rift ، ودعم المعالجة اللاحقة لمساحة الشاشة ضروري للتفاعل بشكل صحيح مع سماعة الرأس.

2. تثبيت الوحدة

الوحدة سهلة التركيب. يمكنك تنزيل الملف القابل للتنفيذ من unit3d.com/get-unity/download .

بمجرد تنزيله ، قم بتشغيله ، ثم اتبع تعليمات المثبت. عند الانتهاء من التثبيت ، ستظهر نافذة بعنوان 'تنشيط ترخيص الوحدة الخاص بك'. حدد المربع الذي يحمل علامة 'تنشيط نسخة تجريبية مجانية لمدة 30 يومًا من Unity Pro' ثم 'موافق'.

تهانينا! لديك الآن نسخة تجريبية مدتها 30 يومًا من Unity Pro. عند انتهاء صلاحية الإصدار التجريبي ، إذا كنت لا ترغب في شراء الإصدار المحترف ، يمكنك التبديل إلى الإصدار المجاني والاحتفاظ بالمحتوى الموجود لديك.

كيفية التقاط لقطة للشاشة بدون زر الصفحة الرئيسية

3. مقدمة موجزة للنموذج الكينوني

قبل البدء مع Unity ، من المهم أن نتجاوز الأساسيات قليلاً. الوحدة تدعم كليهما سي # و جافا سكريبت ل برمجة الألعاب ؛ سنعمل مع C # لهذا البرنامج التعليمي.

أولاً ، إذا لم تكن قد قمت بالبرمجة من قبل ، فضع هذا البرنامج التعليمي جانبًا واقض بضعة أيام في العمل من خلال Microsoft لغة C # التمهيدي حتى تشعر بالراحة عند استخدام اللغة لأداء مهام بسيطة.

إذا كنت تريد شيئًا مختلفًا قليلاً عن C # (ولكن ليس بالضرورة لغة يمكنك استخدامها في Unity) ، فقم بإلقاء نظرة على دليلنا لأسهل لغات البرمجة الست للمبتدئين.

إذا كنت قد برمجت من قبل بلغة حتمية أو لغة كائنية مثل C أو Java ، فقم بقراءة كتاب التمهيدي وتعرف على كيفية اختلاف C # عن اللغات الأخرى التي استخدمتها في الماضي. في كلتا الحالتين ، لا تتابع البرنامج التعليمي حتى تشعر بالراحة في حل المشكلات البسيطة باستخدام C # (على سبيل المثال ، إذا طلبت منك كتابة برنامج يطبع أول مائة رقم أولي ، فيجب أن تكون قادرًا على كتابة هذا البرنامج بدون استشارة جوجل).

أهم مفهوم يجب فهمه هنا هو النموذج الموجه للكائنات (والمختصر كـ افتح ). في اللغات الموجهة للكائنات ، يتم تقسيم البرامج إلى وحدات وظيفية تسمى شاء . كل كائن له المتغيرات والوظائف الخاصة به. تسمى الوظائف الخاصة بالكائن أساليب .

الفكرة هنا هي نمطية: من خلال عزل كل كائن ، وإجبار الكائنات الأخرى على التفاعل معها من خلال أساليبها ، يمكنك تقليل عدد التفاعلات غير المقصودة المحتملة - وبالتالي ، الأخطاء. يمكنك أيضًا إنشاء كائنات يمكنك إعادة استخدامها لاحقًا بدون تعديل. في Unity ، ستقوم ببناء هذه الكائنات وربطها بها كيانات اللعبة (سلوك من سيحكمون).

يتم إنشاء الكائنات من الطبقات : فئة هي مجرد ملف يحدد تعريف الكائن الخاص بك. لذا ، إذا كنت تريد ملف خدع كائن يتعامل مع الذكاء الاصطناعي لعدو في لعبتك ، يمكنك كتابة فئة 'Mook' ، ثم إرفاق هذا الملف بكل كيان عدو. عند تشغيل لعبتك ، سيتم تجهيز كل عدو بنسخة من كائن 'Mook'.

يبدو إرفاق نص جديد إلى كائن كما يلي:

أولا، حدد الكائن وانتقل إلى مفتش . اضغط على إضافة مكون زر.

اذهب إلى نص جديد ، أدخل الاسم الذي تريده ، وانقر فوق إنشاء وإضافة .

الآن لديك نص جديد يمكنك تعديله بالنقر المزدوج عليه!

يبدو ملف الفصل شيئًا كالتالي:

using UnityEngine;
public class Mook : MonoBehaviour {
private float health;
void Start () {
health = 100;
}
void Update(){
if (health > 0) {
/* Search for player
if you encounter the player on the road, kill him
if you get shot, remove a random amount of health */
}
}
}

دعنا نقسم هذا:

  • باستخدام UnityEngine: يخبر هذا السطر C # أننا نريد استخدام مكتبات Unity ، والتي تسمح لنا بالاتصال بمحرك لعبة Unity.
  • سلوك الطبقة العامة: أحادي السلوك: هذا السطر يعلن عن الفئة واسمها - خدع .
  • الصحة العائمة الخاصة: هذا يعلن عن متغير فئة خاص (والذي لا يمكن تغييره إلا من داخل الفصل). يتم إعطاء المتغير قيمة في يبدأ .
  • بداية فارغة (): هذا يعلن عن طريقة تسمى يبدأ . البداية هي طريقة خاصة يتم تشغيلها مرة واحدة فقط ، عند إطلاق اللعبة في البداية.
  • تحديث باطل (): التحديث هو طريقة خاصة أخرى تعمل على كل إطار. سيذهب معظم منطق لعبتك هنا.
  • // إذا واجهت اللاعب على الطريق ، اقتله: هذا السطر عبارة عن تعليق (أي سطر يبدأ بشرطة مائلة مزدوجة يتم تجاهله بواسطة C #). تستخدم التعليقات لتذكير نفسك بما تفعله أجزاء معينة من التعليمات البرمجية. في هذه الحالة ، يتم استخدام هذا التعليق للتعبير عن كتلة أكثر تعقيدًا من التعليمات البرمجية التي تقوم في الواقع بما يصفه التعليق.

جنبا إلى جنب مع يبدأ و تحديث ، يمكنك إنشاء مثيل لطرقك الخاصة بأي اسم تقريبًا. ومع ذلك ، لن يتم تشغيل الطرق التي تقوم بإنشائها ما لم يتم استدعاؤها. دعنا نعلن عن طريقة لفئة افتراضية تسمى addTwoNumbers التي تجمع رقمين معًا:

public float addTwoNumbers(float a, float b) {
return a+b;
}

هذا يعلن عن طريقة عامة (يمكن الوصول إليها من كائنات أخرى) تقوم بإرجاع عدد عشري يسمى addTwoNumbers ، والتي تأخذ عوامين كمدخلات (تسمى إلى و ب ). ثم تقوم بإرجاع مجموع القيمتين كناتج لها.

استدعاء هذه الطريقة من داخل نفس الفئة (على سبيل المثال ، من الداخل تحديث ) يشبه هذا:

float result = addTwoNumbers(1, 2);

استدعاء الطريقة من فئة أخرى مشابه:

addTwoNumbers instance;
float result = instance.addTwoNumbers(1, 2);

مرة أخرى ، يؤدي هذا فقط إلى إنشاء مثيل لفصلنا ، والوصول إلى الطريقة المناسبة وإطعامها بالأرقام التي نريد إضافتها ، ثم تخزين النتيجة في نتيجة . بسيط.

إذا كان البرنامج النصي مرتبطًا بكائن له خصائص خاصة (مثل باعث الجسيمات) لا يمكن الوصول إليه ضمن مجموعة معلمات GameObject العادية ، فيمكنك اختيار معاملته كنوع مختلف من كيانات اللعبة باستخدام GetComponent طريقة.

يبدو بناء الجملة الخاص بذلك كما يلي:

GetComponent().Play();

إذا كان أي من هذا غير مألوف بالنسبة لك ، فارجع وانتقل إلى C # التمهيدي. سيوفر لك الكثير من الإحباط بينما نمضي قدمًا.

4. أساسيات الوحدة

في هذا القسم ، سنعمل في طريقنا من خلال الآليات الأساسية لمحرك الوحدة. سير العمل في Unity يسير على النحو التالي:

  1. قم بإنشاء كيان لخدمة دور في اللعبة (فارغ GameObjects يمكن استخدامها في المهام المنطقية المجردة).
  2. اكتب أو ابحث عن ملف فصل دراسي ، وأضفه إلى الكيان كبرنامج نصي (باستخدام امتداد إضافة مكون زر في مفتش عرض.
  3. يركض > اختبار > التصحيح > كرر حتى تعمل وانتقل إلى العنصر التالي من اللعبة.

تأتي الوحدة مع عدد من علامات تبويب العرض الأساسية التي يمكن وضعها بطرق مختلفة حسب ذوق المستخدم. الخمسة الكبار هم:

  1. لعبة: يعرض مثيلاً قيد التشغيل للعبة يمكنك التفاعل معه واختباره.
  2. مشهد: يوفر إصدارًا ثابتًا وقابلًا للتحرير من عالم الألعاب .
  3. مفتش: يسمح لك بتعديل الكيانات الفردية في عالم اللعبة عن طريق تحديدها في محرر التبويب.
  4. مشروع: يتيح لك تصفح ملفات المشروع وسحب النماذج والمواد والموارد الأخرى إلى محرر علامة التبويب لوضعها في عالم اللعبة.
  5. تسلسل: تعرض علامة التبويب هذه جميع الكائنات في العالم ، مما يسمح لك بالعثور على كائنات بعيدة في المشهد ، والكيانات الرئيسية لبعضها البعض عن طريق النقر والسحب.

انظر إلى الرسم البياني أدناه لمعرفة مواقع كل هذه الأشياء:

4.1 كيانات الوحدة

4.1.1 الشبكات

الشبكات هي الطريق الهندسة ثلاثية الأبعاد ممثلة في الوحدة. يمكنك إما استخدام المدمج في Unity بدائي كائنات (مكعبات ، كرات ، أسطوانات ، إلخ) ، أو استيراد النماذج ثلاثية الأبعاد الخاصة بك من حزمة النمذجة مثل الخلاط أو مايا . يدعم Unity مجموعة متنوعة من التنسيقات ثلاثية الأبعاد ، بما في ذلك .fbx ، و .3ds .

الأدوات الأساسية لمعالجة الشبكات هي أزرار التحجيم والتدوير والترجمة في الزاوية اليسرى العليا من الواجهة. تضيف هذه الأزرار رموز تحكم إلى النماذج في عرض المحرر ، والتي يمكن استخدامها بعد ذلك لمعالجتها في الفضاء. لتغيير خصائص الملمس أو الفيزياء لكائن ما ، حددها واستخدم مفتش عرض لتحليل مواد و جسم متماسك عناصر.

4.1.2 عناصر واجهة المستخدم الرسومية

يمكن عرض الرموز والنصوص التقليدية لواجهة المستخدم الرسومية باستخدام ملف نص واجهة المستخدم الرسومية و ال نسيج واجهة المستخدم الرسومية GameObjects في المحرر. ومع ذلك ، فإن الطريقة الأكثر قوة وواقعية للتعامل مع عناصر واجهة المستخدم هي استخدام نص ثلاثي الأبعاد و رباعية كائنات GameObjects (ذات التركيبات الشفافة وتظليل شفاف غير مضاء) لوضع عناصر HUD في عالم اللعبة ككيانات.

في ال التسلسل الهرمي يمكن سحب عناصر اللعبة هذه إلى الكاميرا الرئيسية لجعلها أطفالًا ، مما يضمن تحركها وتدويرها بالكاميرا.

يمكن تعديل حجم عناصر واجهة المستخدم الرسومية (النصوص والأنسجة) ومقياسها باستخدام الحقول ذات الصلة في علامة تبويب المفتش.

4.1.3 المواد

المواد عبارة عن مجموعات من الأنسجة والتظليل ، ويمكن سحبها مباشرة إلى كائنات اللعبة من علامة تبويب المشروع. يأتي عدد كبير من أدوات التظليل مع Unity Pro ، ويمكنك ضبط النسيج المرفق بها باستخدام علامة تبويب المفتش لكائن يتم تطبيقها عليه.

لاستيراد نسيج ، قم بتحويله إلى ملف .jpg و .بي إن جي ، أو .bmp ، واسحبه إلى ملف الأصول مجلد ضمن دليل مشروع الوحدة (الذي يظهر بتنسيق مستنداتي بشكل افتراضي). بعد بضع ثوانٍ ، سيظهر شريط تحميل في المحرر. عند الانتهاء ، ستتمكن من العثور على الصورة كنسيج أسفل ملف مشروع التبويب.

4.1.5 الأضواء

الأضواء GameObjects التي تشرق على العالم. إذا لم تكن هناك أضواء في المشهد الخاص بك ، فسيتم رسم جميع المضلعات بنفس مستوى السطوع ، مما يمنح العالم مظهرًا مسطحًا باهتًا.

يمكن وضع الأضواء وتدويرها ولها العديد من الخصائص الداخلية التي يمكنك تخصيصها. ال الشدة شريط التمرير يتحكم في سطوع الضوء و نطاق يتحكم في مدى سرعة تلاشيها.

المبادئ التوجيهية في عرض المشهد تظهر لك أقصى مدى للإضاءة. العب مع كلا الإعدادين لتحقيق التأثير المطلوب. يمكنك أيضًا ضبط لون الضوء والنمط ( بسكويت يتم عرضه على السطح الذي يتم توجيه الضوء إليه ، ونوع التوهج الذي يظهر على الشاشة عند النظر مباشرة إلى الضوء. يمكن استخدام ملف تعريف الارتباط لتزييف أنماط إضاءة أكثر واقعية ، وإنشاء ظلال زائفة دراماتيكية ، ومحاكاة أجهزة العرض.

الأنواع الثلاثة الرئيسية للضوء بقعة و نقطة ، و اتجاهي .

أضواء موضعية لديك موقع في مساحة ثلاثية الأبعاد وإسقاط الضوء في اتجاه واحد فقط في مخروط بزاوية متغيرة. هذه جيدة للمصابيح الكاشفة والمصابيح الكاشفة وتمنحك بشكل عام تحكمًا أكثر دقة في الإضاءة. يمكن للأضواء الموضعية أن تلقي بظلالها.

أضواء نقطة لديك موقع في مساحة ثلاثية الأبعاد ، وإلقاء الضوء بالتساوي في جميع الاتجاهات. الأضواء النقطية لا تلقي بظلالها.

أضواء الاتجاه أخيرًا ، تُستخدم لمحاكاة ضوء الشمس: فهي تُسقط الضوء في اتجاه كما لو كان بعيدًا بلا حدود. تؤثر الأضواء الاتجاهية على كل كائن في المشهد ، ويمكن أن تنتج الظلال.

4.1.6 أنظمة الجسيمات

إلى نظام الجسيمات هو GameObject التي تولد وتتحكم في مئات أو آلاف الجسيمات في وقت واحد. الجسيمات عبارة عن كائنات ثنائية الأبعاد صغيرة ومحسّنة معروضة في مساحة ثلاثية الأبعاد. تستخدم أنظمة الجسيمات تصييرًا وفيزيائيًا مبسطًا ، ولكن يمكنها عرض آلاف الكيانات في الوقت الفعلي دون تلعثم ، مما يجعلها مثالية للدخان والنار والمطر والشرر والتأثيرات السحرية والمزيد.

هناك الكثير من المعلمات التي يمكنك تعديلها لتحقيق هذه التأثيرات ، ويمكنك الوصول إليها عن طريق تفريخ نظام جسيمات تحت محرر مكون > اختيار نظام الجسيمات > فتح علامة التبويب المفتش . يمكنك تغيير الحجم والسرعة والاتجاه والدوران واللون والملمس لكل جسيم ، وتعيين معظم هذه المعلمات للتغيير بمرور الوقت أيضًا.

تحت تصادم السمة ، إذا قمت بتمكينها وضبطت مساحة المحاكاة على العالمية ستحصل على جسيمات تصطدم بأجسام في العالم ، والتي يمكن استخدامها لعدد من تأثيرات الجسيمات الواقعية ، بما في ذلك المطر والمياه المتحركة والشرارات.

5. مثال: العناصر الأساسية للعبة

في هذا البرنامج التعليمي ، سنقوم بعمل لعبة بسيطة من بونغ - شيء قمنا بتغطيته عدة مرات في DIY من قبل:

  • اردوينو كلاسيك بونج
  • اردوينو OLED بونج

في هذا القسم ، سننتقل إلى ترتيب العناصر الأساسية - سيأتي البرنامج التعليمي للبرمجة لاحقًا.

أولاً ، دعنا نقسم لعبة بونج إلى مكوناتها الأساسية. أولاً ، نحتاج إلى مجاذيفين وكرة. تطير الكرة خارج الشاشة ، لذلك نريد آلية لإعادة ضبطها. نريد أيضًا أن يعرض النص النتيجة الحالية ، ومن أجل أن نظهر لك جميع العناصر الأساسية للوحدة ، فإننا نريد تأثير جزيئي خيالي عندما تضرب الكرة. يجب أن تكون اللعبة بأكملها مضاءة بشكل كبير.

هذا ينقسم إلى كائن الكرة (كرة) ، أ المولد ، اثنان من الدعائم مجداف مع بواعث الجسيمات المرفقة ، أ كيان نص ثلاثي الأبعاد ، وأ بقعة ضوء . في هذا البرنامج التعليمي ، سنستخدم المادة الفيزيائية الافتراضية وثب، ارتداد ، مع ترتد الجمع ضبط ل تتضاعف . إليك ما يبدو عليه الإعداد ، في عشر لقطات شاشة:

أولاً ، قم بإنشاء ملف دعامة مكعب للمجداف.

مقياسها بشكل مناسب ، قم بتكرارها ، ووضع جسم كروى بين مجاذيف الكرة.

ثم قم بإنشاء ملف كائن نص ثلاثي الأبعاد و مقياس و موقع بشكل صحيح ، تغيير حجم الخط السمة للحصول على صورة أقل بكسل.

بعد ذلك ، قم بإنشاء اثنين أنظمة الجسيمات ، اختر الخصائص التي تريدها ، وأرفقها بالمجاديف.

بعد ذلك ، سترغب في ذلك ضع وتدوير الكاميرا بحيث يؤطر المشهد بشكل صحيح. أثناء تحديد الكاميرا ، يمكنك رؤية معاينة صغيرة لمنظر الكاميرا في الزاوية اليمنى السفلية.

قبل أن ننتهي ، نحتاج إلى إنشاء مكعبين إضافيين ليكونا مصدات ، لمنع الكرة من الارتداد خارج منطقة اللعبة. يمكننا جعلها غير مرئية بإلغاء تحديد شبكة العارض في ال علامة التبويب المفتش .

إذا قمت بالضغط على زر التشغيل ، يمكنك الآن رؤية العناصر الأساسية للعبتنا معروضة. لن يفعلوا أي شيء بعد ، لكننا سنصل إلى ذلك!

الآن بعد أن حصلنا على هذا الإعداد ، سنتحدث عن ما ينطوي عليه برمجة هذه العناصر لإنشاء لعبة.

6. البرمجة في الوحدة

بمجرد إرفاق نص برمجي بكائن ، يمكنك مراجعته بالنقر المزدوج عليه في ملف مفتش . يفتح هذا تطوير أحادي ، بيئة التطوير الافتراضية للوحدة. في جوهره ، Monodevelop هو محرر نصوص مع ميزات محسّنة بشكل خاص نحو البرمجة.

يتم تمييز الكلمات الأساسية والتعليقات بتنسيق أزرق و لون أخضر ، وتظهر القيم العددية والسلاسل بتنسيق صافي . إذا كنت قد استخدمت كسوف أو أي IDE آخر ، MonoDevelop مشابه جدًا. تستطيع يبني البرامج النصية الخاصة بك من داخل المحرر ، للتحقق من وجود أخطاء في بناء الجملة ، مثل:

بشكل عام ، لجعل البرنامج النصي الخاص بك يتفاعل مع Unity ، ستحتاج إلى الإشارة إلى العناصر التي يمتلكها الكائن الذي يحمل البرنامج النصي (يمكنك رؤية قائمة بهذه العناصر ضمن مفتش علامة التبويب عند تحديد الكائن ذي الصلة). يمكنك بعد ذلك استدعاء طرق أو تعيين متغيرات لكل عنصر من هذه العناصر لسن التغييرات التي تريدها.

إذا كنت تريد أن يؤثر برنامج نصي على كائن ما على خصائص كائن مختلف ، يمكنك إنشاء ملف GameObject متغير في البرنامج النصي الخاص بك ، واستخدم مفتش لتعيينه إلى كائن آخر في المشهد.

قائمة العناصر التي قد يحتوي عليها الكائن هي كما يلي (مأخوذة من وجهة نظر المفتش لأحد المجاذيف في المثال أعلاه):

  1. تحول
  2. مكعب (مرشح شبكي)
  3. مصادم الصندوق
  4. شبكة العارض

يمكن أن يتأثر كل جانب من هذه الجوانب للكائن من داخل النص. بعد ذلك ، سننظر في كيفية القيام بذلك بالضبط.

6.1 التحويل

تتحكم وظائف التحويل لـ GameObject في Unity في المعلمات المادية لهذا الكائن: الخاص به مقياس ، إنه موقع و له اتجاه . يمكنك الوصول إليها من خلال نص مثل هذا:

transform.position = newPositionVector3;
transform.rotation = newRotationQuaternion;
transform.localScale = newScaleVector3;

في الأمثلة أعلاه ، المتغيرات المسماة من الأنواع المحددة في الأسماء. توجد بعض التفاصيل الأساسية هنا: يتم تخزين الموقع والمقياس ، كما تتوقع ، على شكل Vector3s . يمكنك الوصول إلى ملف X و و ، و مع مكونات كل منها (على سبيل المثال ، تحويل.وضع. y يمنحك مسافة جسم فوق مستوى الصفر).

ومع ذلك ، لتجنب قفل gimbal ، يتم التعامل مع التناوب الرباعية (ناقلات مكونة من أربعة مكونات). نظرًا لأن كواتيرونات المعالجة اليدوية غير بديهية ، يمكنك معالجة التدويرات باستخدام زوايا أويلريان باستخدام الرباعية طريقة مثل ذلك:

transform.rotation = Quaternion.Euler(pitch, yaw, roll);

إذا كنت ترغب في نقل الكائنات بسلاسة من مكان إلى آخر ، فستجد ملف سليرب طريقة للرباعيات و vector3s مفيدة. يأخذ Slerp ثلاث حجج - الحالة الحالية ، والحالة النهائية ، وسرعة التغيير ، ويقحم بينها بسلاسة بالسرعة المحددة. يبدو بناء الجملة كما يلي:

transform.position = Vector3.Slerp(startPositionVector3, newDestinationVector3, 1);

6.2 العارض

تتيح لك وظائف العارض في Unity التحكم في طريقة عرض أسطح الدعائم على الشاشة. يمكنك إعادة تعيين النسيج وتغيير اللون وتغيير تظليل الكائن وإمكانية رؤيته. يبدو بناء الجملة كما يلي:

renderer.enabled = false;
renderer.material.color = new Color(0, 255, 0);
renderer.material.mainTexture = myTexture;
renderer.material.shader = newShader;

معظم هذه الوظائف لها وظائف واضحة جدا. المثال الأول يجعل الكائن المعني غير مرئي: خدعة مفيدة في عدد من المواقف. المثال الثاني يعيّن ملف لون RGB (أي ، الأخضر) للكائن المعني. الثالث يعين النسيج المنتشر الرئيسي لمتغير Texture جديد. يغير المثال الأخير تظليل مادة الكائن إلى متغير تظليل محدد حديثًا.

6.3 الفيزياء

تأتي الوحدة مع محرك فيزيائي متكامل - شيء تستخدمه جميع ألعاب رمل الفيزياء. يتيح لك هذا تعيين الخصائص الفيزيائية للكائنات والسماح لك بمعالجة تفاصيل محاكاتها. بشكل عام ، بدلاً من محاولة تنفيذ الفيزياء الخاصة بك باستخدام كتاب مدرسي ونظام التحويل ، فمن الأسهل والأكثر قوة استخدام محرك فيزياء الوحدة إلى أقصى حد ممكن.

تتطلب جميع الدعائم الفيزيائية المصادمات . ومع ذلك ، يتم التعامل مع المحاكاة الفعلية نفسها بواسطة أ جسم متماسك ، والتي يمكن إضافتها في ملف مفتش عرض. يمكن أن تكون الأجسام الصلبة حركي أو غير متحرك .

تتعارض دعائم الفيزياء الحركية مع (وتأثير) دعائم الفيزياء غير الحركية حولها ، ولكنها لا تتأثر بالتصادم نفسها. الدعائم الحركية الثابتة هي الأشياء الثابتة التي يضرب بها المثل ، والأجسام الحركية المتحركة هي القوة التي لا يمكن إيقافها (بالنسبة للسجل ، عندما تصطدم ، فإنها تمر ببساطة من خلال بعضها البعض).

علاوة على ذلك ، يمكنك ضبط السحب الزاوي للجسم (مقدار الطاقة اللازمة لتدويره) ، وتغيير كتلته ، وتحديد ما إذا كان يتأثر بالجاذبية أم لا ، وتطبيق قوى عليه.

أمثلة:

rigidbody.angularDrag = 0.1f;
rigidbody.mass = 100;
rigidbody.isKinematic = false;
rigidbody.useGravity = true;
rigidbody.AddForce(transform.forward * 100);

هذه كلها جميلة لا تحتاج إلى شرح. الشيء الوحيد الذي يجب ملاحظته هنا هو استخدام تحويل إلى الأمام . تحتوي جميع أجهزة Vector3 على ثلاثة مكونات ( .إلى الأمام و .فوق ، و .حق ) المرتبطة بهم ، والتي يمكن الوصول إليها والتناوب معها ( إلى الأمام هو اتجاه السهم الأزرق في المحرر). ال تحويل إلى الأمام الكلمة الأساسية هي ببساطة المتجه الأمامي للكائن الحالي بحجم 1. يمكن ضربها بواسطة عوامة لإنشاء المزيد من القوة على الكائن. يمكنك أيضا الرجوع تحويل و تحويل صحيح ، ونفيهم للحصول على انعكاساتهم.

6.4 الاصطدام

في كثير من الأحيان ، عند إنشاء لعبة ، قد ترغب في أن يؤدي التصادم إلى بعض التغيير في الحالة في التعليمات البرمجية الخاصة بك ، بما يتجاوز مجرد محاكاة الفيزياء. لهذا ، ستحتاج إلى ملف طريقة كشف الاصطدام .

هناك قدر معين من العمل التحضيري اللازم لاكتشاف الاصطدامات في الوحدة. أولاً ، يحتاج واحد على الأقل من الكائنات في التصادم إلى صلب غير حركي أضفها له. يجب أن يحتوي كلا الجسمين على مصادمات صحيحة ، مضبوطة على أن تكون غير مشغلات. يجب أن تكون السرعة الإجمالية لكلا الجسمين منخفضة بدرجة كافية بحيث يصطدمان بالفعل ، بدلاً من مجرد تخطي أحدهما الآخر.

إذا كنت قد انتهيت من كل ذلك ، فيمكنك التحقق من وجود تصادم عن طريق وضع طريقة خاصة لاكتشاف التصادم في نص برمجي متصل بالكائن الذي ترغب في التحقق من التصادم به. ستبدو الطريقة كما يلي:

void OnCollisionEnter(Collision other) {
//do things here
}

سيتم تشغيل هذه الطريقة تلقائيًا أثناء الإطار الأول الذي يلمس فيه كائن آخر كائنك. كيان الاصطدام آخر هو إشارة إلى الكائن الذي تضغط عليه. يمكنك ، على سبيل المثال ، الرجوع إليها كائن اللعبة و جسم متماسك ، و تحول الخصائص للتلاعب بها بطرق مختلفة. في حين OnCollisionEnter هي على الأرجح الوظيفة الأكثر شيوعًا التي ستستخدمها ، يمكنك أيضًا استخدامها OnCollisionExit و OnCollisionStay (باستخدام نفس الصيغة والاستخدام) ، والتي يتم تنشيطها أثناء الإطار الأول بحيث تتوقف عن الاصطدام مع كائن وأثناء كل إطار تصطدم به مع كائن ، على التوالي.

في بعض الأحيان ، قد يكون من المفيد أيضًا القيام بما يسمى صب راي . في البث الشعاعي ، يكون الخط الرفيع بلا حدود (أ شعاع ) عبر العالم من مصدر ما ، على طول متجه ، وعندما يصطدم بشيء ما ، يتم إرجاع الموقع والتفاصيل الأخرى للتصادم الأول. يبدو رمز البث الشعاعي كما يلي:

RaycastHit hit;
if (Physics.Raycast(transform.position, -Vector3.up, out hit)) {
float distanceToGround = hit.distance;
}

هذا يلقي شعاعًا من موضع الكائن الحالي على طول -Vector3.up (مباشرة لأسفل) ، ويربط المتغير نجاح إلى أول كائن يصطدم به. بمجرد أن يصطدم شعاعك بشيء ما ، يمكنك الوصول إليه ضرب المسافة لتحديد مدى بعده ، أو ضرب للتعامل مع الكائن الذي تضربه.

يمكن استخدام Raycasts مثل هذا للرماة لتحديد ما يشير إليه المسدس ، أو لتحديد الكائنات عندما تنظر إليها الكاميرا ، أو لأنماط معينة من ميكانيكي الحركة.

6.5 تصحيح الوقت

هناك عامل مهم يجب مراعاته عند التعامل مع الأشياء بهذه الطريقة معدل الإطار . بغض النظر عن مدى دقة التحسين ، فإن الإطارات ستختلف دائمًا ، ولا تريد أن تتغير سرعة لعبتك وفقًا لذلك. إذا قام شخص آخر بتشغيل لعبتك على جهاز كمبيوتر أسرع مما قمت بتطويرها عليه ، فأنت لا تريد تشغيل اللعبة بسرعة مضاعفة.

الطريقة التي تصحح بها ذلك هي بضرب القيم التي تستخدمها في الوقت المستغرق لعرض الإطار الأخير. يتم ذلك عن طريق استخدام Time.deltaTime . هذا يغير بشكل فعال سرعة أي متغير تقوم بزيادة كل إطار منه التغيير لكل إطار إلى التغيير في الثانية ، وربما يتعين عليك إجراء هذا التغيير على أي قيمة تزيدها أو تنقص كل إطار.

6.6 مصادر الصوت والمستمعين

الآن بعد أن غطينا كيفية إنشاء الكائنات وعرضها والتحكم فيها ، فلنتحدث عن المعنى الآخر الذي يمكن أن تخدمه ألعاب الكمبيوتر: يبدو . تدعم الوحدة نوعين من الأصوات: 2 د و ثلاثي الأبعاد اصوات. تختلف الأصوات ثلاثية الأبعاد في حجمها بناءً على المسافة ، وتشوه عندما تتحرك بالنسبة إلى الكاميرا ؛ الأصوات ثنائية الأبعاد لا تفعل ذلك.

تعد الأصوات ثنائية الأبعاد مناسبة للإفراط في الصوت وموسيقى الخلفية ، وتنطبق الأصوات ثلاثية الأبعاد على الأصوات التي تولدها الأحداث في العالم. لتغيير ما إذا كان الصوت ثلاثي الأبعاد أم لا ، حدده في تنسيق مشروع عرض ، قم بالتبديل إلى ملف مفتش عرض وحدد الخيار المناسب من القائمة المنسدلة ، ثم اضغط على إعادة الاستيراد زر.

لتشغيل الصوت فعليًا ، ستحتاج إلى إرفاق ملف مصدر الصوت إلى الدعامة (الدعامة التي تريد أن يصدر الصوت منها ، في حالة الصوت ثلاثي الأبعاد). ثم ستحتاج إلى فتح ملف مقطع صوتي الحقل وحدد ملف الصوت الخاص بك.

يمكن للناس رؤية من شاهد الفيسبوك الخاص بهم

يمكنك استخدام myAudioSource.Pause () و myAudioSource.Play () للتحكم في تلك الملفات الصوتية. يمكنك ضبط سلوكيات السقوط وحجم الصوت وتحويل دوبلر للأصوات الموجودة أسفل مفتش علامة التبويب لمصدر الصوت.

6.7 المدخلات

اللعبة التي لا تأخذ أي مدخلات من المستخدم ليست لعبة كبيرة. هناك الكثير من أنواع المدخلات المختلفة التي يمكنك قراءتها ، ويمكن الوصول إليها جميعًا تقريبًا من خلال مدخل و رمز المفتاح شاء. فيما يلي بعض نماذج بيانات الإدخال (التي لها قيم تم تقييمها في كل إطار).

Vector3 mousePos = Input.mousePosition;
bool isLeftClicking = Input.GetMouseButton(0);
bool isPressingSpace = Input.GetKey(KeyCode.Space);

وظائف هذه السطور في الغالب تشرح نفسها بنفسها. باستخدام هذه الأنواع الثلاثة من مراجع الإدخال ، يمكنك إعادة بناء مخططات التحكم لمعظم ألعاب الكمبيوتر ثلاثية الأبعاد الحديثة.

6.8 تصحيح البرنامج النصي

لنفترض أن البرنامج النصي لا يعمل. كما يقول الطبيب الجيد ، يمكن أن تحدث لك الانفجارات. إذا كانت هناك أخطاء صريحة في بناء الجملة في C # الخاص بك ، فسوف ترفض اللعبة بشكل عام التشغيل عندما تضغط على play ، ويتم توفير بعض رسائل الخطأ المفيدة إلى حد ما إذا كنت يبني البرامج النصية من داخل المحرر. انظر أدناه:

عادةً ما لا تكون هذه الأخطاء هي الأصعب في الإصلاح. ما يمكن أن يكون أكثر إشكالية هو الأخطاء الدلالية الخفية ، حيث كتبت بنجاح ملفًا مليئًا بـ C # صالح - فقط لا يفعل ما كنت تعتقد أنه سيفعل. إذا كان لديك أحد هذه الأخطاء ، وكنت تواجه مشكلة في تعقبه ، فهناك بعض الأشياء التي يمكنك محاولة تحسينها.

الأول هو إيقاف تنفيذ اللعبة مؤقتًا والتحقق من وحدة التحكم. يمكنك إيقاف اللعبة مؤقتًا بالنقر فوق ملف وقفة في الجزء الأوسط العلوي من المحرر ، ثم تحديد وحدة التحكم من أسفل نافذة او شباك القائمة (أو الضغط على كنترول > تحول > ج ). حتى لو لم تكن هناك أخطاء ، يمكن أن تساعد التحذيرات في إعطاء بعض الأدلة على ما قد يحدث خطأ.

إذا لم ينجح ذلك ، يمكنك أيضًا محاولة الحصول على فكرة عن حالة البرنامج النصي الخاص بك عن طريق طباعة حالة المتغيرات الداخلية للتحقق من أن البرنامج يقوم بما تعتقد أنه يفعله. يمكنك استخدام Debug.Log (سلسلة) لطباعة محتويات سلسلة إلى وحدة التحكم عندما يصل تنفيذ البرنامج إلى هذا الخط. بشكل عام ، إذا كنت تعمل بشكل عكسي مما تعتقد أنه يجب أن يحدث من خلال الأشياء التي يجب أن تحدثه ، فستصل في النهاية إلى نقطة لا تقوم فيها مطبوعات تصحيح الأخطاء بما تتوقعه منها. هذا هو المكان الذي يوجد فيه خطأك.

7. مثال: البرمجة النصية بونج

لبناء لعبة Pong ، دعنا نقسم اللعبة إلى عناصرها الأساسية: نحتاج إلى كرة ترتد ذهابًا وإيابًا بين المضارب بسرعة متزايدة ، ونحتاج إلى لوحة تسجيل تعرف متى تجاوزت الكرات المجاذيف ، ونحتاج إلى آلية من أجل إعادة الكرة عندما يحدث ذلك. تتمثل الخطوة الأولى الجيدة في إضافة جسم صلب غير حركي إلى الكرة ، وجسمان صلبان حركيان إلى المجاذيف ، وتعطيل الجاذبية لجميعهم ، وتعيين مادة فيزيائية مناسبة من الأصول القياسية ( وثب، ارتداد مع ترتد الجمع ضبط ل تتضاعف ).

أدناه ، يمكنك عرض البرنامج النصي للكرة مع التعليقات التوضيحية. تحتاج الكرة إلى تحقيق بعض الأهداف الأساسية: يجب أن ترتد بنمط معقد ، وتحافظ دائمًا على الحركة على كلا المحورين ، ويجب أن تتسارع بوتيرة صعبة ولكن ليست مستحيلة في الاتجاه الأفقي.

BallHandler.cs

بعد ذلك ، نحتاج إلى كتابة برنامج المضرب الخاص بنا ، والذي يمكنك عرضه أدناه. يحتاج المضرب إلى التحرك لأعلى ولأسفل استجابةً للضغط على المفاتيح (ولكن ليس خارج حدود معينة). يحتاج أيضًا إلى تشغيل نظام الجسيمات عندما يصطدم بشيء ما.

PaddleHandler.cs

بعد ذلك ، نحتاج إلى ذكاء اصطناعي للعدو: شيء من شأنه أن يتسبب في تحرك مجداف العدو نحو الكرة بمعدل ثابت. لذلك ، سنستخدم Vector3.Slerp لأقصى قدر من البساطة. نود أيضًا نفس سلوك الجسيمات الذي نراه على المضرب الخاص بنا.

EnemyAI.cs

أخيرًا ، نحتاج إلى برنامج نصي لتحديث لوحة النتائج وإعادة ضبط الكرة عندما تخرج عن الحدود.

ScoreboardUpdater.cs

مع إرفاق هذه النصوص والمراجع ، عندما ندير لعبتنا Pong ، نختبر طريقة اللعب!

تستطيع تنزيل العرض التوضيحي الخاص بي على Pong ، إذا كنت ترغب في رؤية كل ما أوجزته عمليًا. يعمل على أنظمة Windows و Mac و Linux.

8. استكشاف التوثيق / تعلم المزيد

الوحدة هي محرك معقد يحتوي على العديد من الميزات التي يمكن تغطيتها عمليًا في دليل من هذا النمط ، وذلك قبل أن تقوم بتضمين مجموعة واسعة من امتدادات الوحدة (المجانية والتجارية) المتوفرة على الإنترنت. سيعطيك هذا الدليل نقطة انطلاق قوية لتطوير لعبة ، لكن التعليم الذاتي هو مهارة مهمة في أي مسعى ، ومضاعفة ذلك هنا.

مورد حاسم هنا هو نص الوحدة . ScriptReference هي قاعدة بيانات قابلة للبحث ، ومتاحة لكل من C # و Javascript ، والتي تحتوي على قائمة بكل أمر وميزة Unity ، مع وصف لوظائفها وأمثلة مختصرة عن بناء الجملة.

إذا كنت تواجه مشكلة مع محرر واجهة Unity ، أو تمامًا مثل مقاطع الفيديو التعليمية على سبيل التفضيل ، فهناك قائمة طويلة من الجودة العالية دروس فيديو الوحدة متوفرة. أكثر شمولاً (لكن أقل شمولاً) دروس نصية للوحدة تتوفر أيضًا من CatLikeCoding.

أخيرًا ، إذا كانت لديك أسئلة خارج نطاق الوثائق أو البرامج التعليمية ، فيمكنك طرح أسئلة محددة على الإجابات . تذكر أن الإجابات يقدمها متطوعون ، لذا احترم وقتهم وابحث في قاعدة البيانات أولاً للتأكد من أن سؤالك لم تتم الإجابة عليه بالفعل.

9. بناء اللعبة / التحويل البرمجي إلى تطبيق مستقل

عندما تنشئ شيئًا تفخر به (أو تنتهي من استنساخ مثال Pong المخادع قليلاً من أجل التدريب) ، فقد حان الوقت لنقل لعبتك من المحرر وتحويلها إلى شيء يمكنك نشره على الإنترنت وإجباره أصدقائك وعائلتك للعب. للقيام بذلك ، ستحتاج إلى إنشاء تطبيق مستقل. النبأ السار هو أنه في Unity ، هذا سهل للغاية. ومع ذلك ، هناك عدد قليل من حالات الحازوقة التي قد ترغب في توخي الحذر منها.

بالنسبة للمبتدئين ، اعلم أنه يمكنك فقط إنشاء مشروع خالٍ من الأخطاء. لتحقيق هذه الغاية ، تأكد من فتح وحدة التحكم أثناء الإنشاء: هناك بعض شروط الخطأ التي ستتجاهلها اللعبة في المحرر ، ولكنها ستظل تجهض محاولة إنشاء. يؤدي هذا فقط إلى تفريغ رسائل الخطأ إلى وحدة التحكم ، مع عدم وجود نتائج مرئية على الشاشة ، مما قد يكون محبطًا إذا نسيت التحقق. بمجرد حصولك على لعبة تجميع خالية من الأخطاء ، يمكنك الاختيار بناء الإعدادات تحت ملف القائمة ، أو اضغط كنترول > تحول

> ب . سيظهر لك هذا مربع حوار بسيط يسمح لك ببناء لعبتك لعدة منصات.

العملية من هناك تشرح نفسها بنفسها: حدد خياراتك ، واضغط يبني ؛ ستطالبك اللعبة بتثبيت دليل ، وستضع كل من الدليل القابل للتنفيذ ودليل البيانات هناك. يمكن ضغط هذين الملفين معًا وتوزيعهما (فقط تأكد من أنك لا تفرض رسومًا على لعبة تم إنشاؤها في العرض التوضيحي للوحدة ، لأن هذا ينتهك شروط الخدمة).

10. ملاحظات ختامية

كما هو الحال مع أي أداة لتطوير الألعاب ، فإن مفتاح النجاح مع Unity هو التطوير التكراري. عليك أن تبني زيادات يمكن إدارتها - كن طموحًا ، بكل الوسائل ، لكن كن طموحًا في أجزاء صغيرة ، وقم بترتيب تلك الأجزاء بحيث ، حتى لو لم تحقق طموحك النهائي ، فسوف ينتهي بك الأمر على الأقل إلى تحقيق متماسك المنتج.

احصل على العناصر الأكثر أهمية في البداية: ضع فكرة في ذهنك الحد الأدنى من المنتجات القابلة للتطبيق ، أبسط وأهم شيء يمكن أن تخلقه وما زلت تشعر وكأنك حققت شيئًا يستحق العناء. احصل على الحد الأدنى من المشروع القابل للتطبيق قبل الانتقال إلى طموحات أكبر.

يمنحك هذا البرنامج التعليمي نقطة انطلاق قوية ، ولكن أفضل طريقة لتعلم الوحدة هي من خلال بناء لعبة. ابدأ في بناء لعبة ، واملأ الفجوات في معرفتك فور ظهورها ، وسيؤدي التدفق التدريجي للمعرفة إلى تآكل الأشياء التي لا تعرفها بسرعة مفاجئة.

إذا كنت قد قرأت كل هذا وكنت غارقًا قليلاً في الترميز المطلوب مع Unity ، فتأكد من التحقق من كيفية تعلم تطوير اللعبة مع Unity Learn واقرأ أيضًا دليلنا حول كيفية صنع ألعاب الفيديو بدون أي برمجة.

الوحدة هي أداة قوية ، ومع القليل من الاستكشاف ، يمكنك بناء مشاريع رائعة معها بشكل أسرع مما قد تتوقعه. أخبرنا بما أنشأته في التعليقات أدناه - نود أن نرى!

يشارك يشارك سقسقة بريد الالكتروني 3 طرق للتحقق مما إذا كان البريد الإلكتروني حقيقيًا أم مزيفًا

إذا تلقيت بريدًا إلكترونيًا يبدو مشكوكًا فيه بعض الشيء ، فمن الأفضل دائمًا التحقق من صحته. فيما يلي ثلاث طرق لمعرفة ما إذا كان البريد الإلكتروني حقيقيًا.

اقرأ التالي
مواضيع ذات صلة
  • برمجة
  • برمجة
  • وثيقةطويلة
  • دليل Longform
نبذة عن الكاتب أندريه إنفانتي(تم نشر 131 مقالة)

كاتب وصحفي مقيم في الجنوب الغربي ، يضمن أندريه أن يظل وظيفيًا حتى 50 درجة مئوية ، ومقاوم للماء حتى عمق 12 قدمًا.

المزيد من Andre Infante

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك