‫أهلا ومرحبا.
‫في هذه المحاضرة ، سنقوم بإعداد الرابط بين المحرك والمحفز باستخدام تقنية تسمى حقن
‫التبعية بحيث في نهاية المحاضرة ، إذا وضعنا الغرغرة ، يتحرك الباب لأسفل
‫، أو على الأقل يفعل جزئيا.
‫دعونا نتعمق ونرى كيف يعمل هذا.
‫وأخذ فنجان.
‫لقد رأينا أن هناك تبعية ، ما نسميه تبعية مقبض الفيزياء.
‫لا يمكن لهذا المنتزع القيام بعمله ما لم يكن لديك مكون مقبض فيزيائي في مكان ما حوله الآن ، لذا يحدث
‫أن يكون مكون المشغل هو نفسه.
‫يحتاج مكون المشغل ، من أجل القيام بعمله بشكل صحيح ، إلى الوصول إلى مكون المحرك.
‫ومع ذلك ، فإن الأمر أصعب قليلاً في هذه الحالة لأنه بالتأكيد ، في حالة بابنا
‫السري ، يكون المشغل والجسم المتحرك داخل نفس الممثل.
‫لذلك يمكنك الحصول على كائن من خلال إيجاد مكون من نوع على الممثل.
‫ولكن ماذا لو كان لدينا هذا الموقف في السيناريو الخاص بي حيث أريد أن يكون المشغل الخاص
‫بي في جزء مختلف من الغرفة عن الممثل الذي يتحرك جيدًا للسماح بهذا النوع من المرونة.
‫نريده بحيث لا يضطر المشغل للذهاب والعثور على تبعياته الخاصة.
‫وهناك في الواقع اسم لهذا النوع من مفهوم البرنامج.
‫يطلق عليه حقنة التبعية.
‫في الأساس ، إنه في الحالة التي يكون لدينا فيها شيء يقول ، أحتاج إلى كائن آخر ، لكن لا يمكنني
‫العثور عليه بنفسي أو لا أريد أن أجده بنفسي.
‫وغالبًا ما يكون من المعقول عدم ترك الأمر للكائن الذي يقوم بعمله الخاص ، مما يجعله يقوم بوظيفة أخرى
‫تتمثل في محاولة الحصول على شيء ما.
‫لذا فإن الطريقة التي يمكننا بها القيام بذلك هي إنشاء آلية للمخططات لإخبار مكون المشغل بمكان العثور
‫على المحرك.
‫والطريقة التي سنقوم بها هي من خلال إنشاء دالة مخطط قابلة للاستدعاء في مكون المشغل الخاص بنا.
‫لذلك ستكون عامة.
‫سنضعها في القسم العام أسفل مكون التجزئة ، وستكون دالة U بحيث
‫يمكن أن تكون بعد ذلك بين قوسين ، مخطط قابل للاستدعاء.
‫ولا داعي لأن يكون هناك الكثير من هذه الوظيفة.
‫سيكون باطلاً لأنه لا يحتاج إلى إرجاع شيء ما ، ولكن سيتم تعيينه ، لذلك
‫سيتم تعيين رابط للمحرك ومن أجل تعيين رابط للمحرك ، فإنه يحتاج إلى تأخذ
‫في مؤشر لمكون المحرك.
‫لذلك ستكون أنت نجم المحرك ويمكننا فقط أن نسمي هذا المحرك مثل ذلك ونضع فاصلة منقوطة في نهاية ذلك
‫السطر.
‫ونحن بحاجة لتخزين هذا في مكان ما.
‫لذلك سنقوم بإنشاء متغير خاص جديد.
‫لن تكون خاصية جديدة وستكون مجرد مؤشر متحرك على شكل حرف U ، والذي سنطلق
‫عليه اسم المحرك أيضًا.
‫مثل ذلك وما سنفعله هو تنفيذ هذه المجموعة في CPP بحيث تحدد هذه الحركة مؤشرًا ، والذي
‫سيكون افتراضيًا فارغًا.
‫وعلينا فعل شيء آخر.
‫يجب علينا تضمين ملف الرأس للمحرك الخاص بنا.
‫الآن في هذه الحالة ، نظرًا لأن ملف الرأس موجود في نفس المجلد
‫مثل مكون المشغل ، كل ما يتعين علينا القيام به هو تضمين علامة اقتباس المحرك H وهذا سوف نتأكد من أن مكون المشغل على دراية بنوع
‫المحرك.
‫فلننتقل إلى مكون المشغل.
‫CP وسأضع هذا أسفل مكون التجزئة الذي سنقوم بتطبيق مجموعة المحرك.
‫سنضع الفئة التي قمت بتشغيل المكون قبلها ونضع مسافة بادئة لها.
‫أزل الفاصلة المنقوطة وأضف الأقواس.
‫وبشكل أساسي ، كل ما يتعين علينا القيام به هنا ، دعنا نغير الاسم فقط في ملف C ++.
‫لا يهم في الواقع ما إذا كان اسم المعلمات يتطابق بين header و C ++.
‫لذا يمكننا تغييره هنا والقول إن المحرك الجديد هو ما سيأتي ليحرك.
‫ومن ثم يمكننا ضبط المتغير المحلي ، محرك متغير الفئة لدينا يساوي المحرك الجديد مثل.
‫لذا من المهم جدًا الآن ألا تتخطى خطوة إعادة التسمية هذه لأنه إذا كانت معلمة الإدخال
‫هي نفس اسم أحد المتغيرات في الفئة ، فإن غير الواقعي افتراضيًا سيحدد ذلك ليكون خطأ.
‫يطلق عليه التظليل ولا يريدك Unreal أن تفعل ذلك ، لذلك تحتاج إلى التأكد من أن لديك اسم المعلمة
‫بشكل مختلف عن المتغير الآن لأن هذه الوظائف الجديدة لا تظهر دائمًا مع تغييرات الترميز
‫المباشرة.
‫سأقوم بإغلاق المحرر المعاد تجميعه من كود Visual Studio ثم إعادة التشغيل من المشروع
‫الجديد.
‫الآن دعنا ننتقل إلى درج المحتوى ، ونفتح مخطط الحائط السري الخاص بنا ، ثم من
‫عقدة Begin Play في الرسم البياني للحدث ، دعنا ننطلق من هنا ونبحث عن المحرك الثابت.
‫لاحظ الآن أن هناك خيارين هنا.
‫الأول ، هو تعيين المكون الذي يسمى أيضًا المحرك ، والآخر هو وظيفة في مكون المشغل.
‫لذلك نريد تحديد الوظيفة التي تعمل في مكون المشغل.
‫ثم ما نريد القيام به هو السحب في مكون المحرك الخاص بنا باعتباره الوسيطات الأخرى لهذه الوظيفة وهذا يجب أن
‫يؤدي الغرض.
‫تم ضبط المحرك عند بدء اللعب.
‫إذن ما نريد أن يحدث الآن بشكل أساسي هو أن مكون المشغل الخاص بنا يجب أن
‫يضبط ويضبط يجب أن يتحرك منطقيًا هنا.
‫لذلك سيكون هذا هو التحدي الذي أواجهه في إنشاء بعض الوظائف العامة في المحرك والمحرك.
‫يجب تعيين CP يجب أن يتحرك ويجب أن يقوم بتحديث متغير الخاصية.
‫في الواقع ، يمكنك جعله ليس خاصية جديدة بعد الآن لأننا سنقوم بإعداده من خلال الكود
‫الآن وبعد ذلك يمكنك وضعه في القسم العام.
‫يجب أن يكون عامًا لأننا سنحاول الوصول إليه من مكون المشغل الخاص بنا.
‫ويمكنك تسميته على مؤشر المحرك الذي حصلنا عليه في مكون المشغل من إعداد مكون التجزئة الخاص به
‫، والمنطقي المناسب ، سواء أردنا فتحه أو قفله مرة أخرى ، وإيقاف الفيديو مؤقتًا والاستمتاع.
‫حسنًا ، مرحبًا بعودتك.
‫لذا سأقوم بإزالة الخاصية من يجب أن أنقل سأذهب إلى القسم
‫العام أسفل مكون TTIC وسأقوم بإنشاء مجموعة فراغ يجب أن تتحرك مع الأخذ في الاعتبار المنطقي الذي
‫سنسميه يجب تتحرك هكذا.
‫وبعد ذلك سنأخذ هذا وننتقل إلى الخطوة CP وننفذها ، مع استبدال الفاصلة المنقوطة ،
‫وإضافة القولون ، وصنف القولون ، ثم مرة أخرى يمكننا بشكل أساسي أن نسمي هذا الجديد الذي يجب أن
‫يتحرك ويمكننا أن نقول ذلك يجب أن يتحرك يساوي الجديد يجب أن يتحرك.
‫الآن قد تتساءل ، لماذا لا نجعل المتغيرات نفسها متاحة للجمهور حتى نتمكن
‫من تعيينها مباشرة؟
‫هذه ليست ممارسة جيدة بشكل عام في C ++ لأنك إذا سمحت لشخص ما بتغيير متغيراتك ، فلن تعرف أبدًا
‫ما يمكن أن يحدث له.
‫بينما إذا كانت لديك طريقة للقيام بذلك نيابةً عنك ، فإنها تتيح لك لاحقًا تغيير كيفية هيكلة المتغيرات الداخلية دون
‫الحاجة إلى تغيير وظائفك العامة ، مما يعني أن هناك عددًا أقل من التحديثات للفئات المختلفة التي
‫يتعين عليك القيام بها.
‫لذلك بشكل عام ، كقاعدة عامة ، نستخدم دائمًا المحددات والمعرفات إذا احتجنا إلى الوصول إلى المتغيرات في الفئات
‫الأخرى.
‫والآن بعد أن أنشأنا هذه الوظيفة الجديدة ، دعنا ننتقل إلى مكون المثلث CP حيث لدينا حاليًا
‫رسائل السجل الخاصة بنا.
‫ما نريد القيام به هو الوصول إلى مؤشر المحرك الخاص بنا ، لذلك سنقوم بتحريك مجموعة سهم المحرك.
‫وفي حالة وجود ممثل مقبول ، يجب أن يكون هذا صحيحًا.
‫يجب أن نحرك الفاصلة المنقوطة في نهاية السطر.
‫وفي حالة أخرى ، حسنًا ، ربما لا ينبغي لنا ذلك.
‫لذلك سنقوم بتحريك مجموعة الأسهم ويجب أن تتحرك بين قوسين ونضع كاذبة إزالة ذلك R الإضافي الذي كان لدي في نهاية
‫طريقي ودعنا نعيد التحويل البرمجي الآن في هذه الحالة لأنني أضفت هذه الوظيفة فقط
‫في أرض C ++ و انها ليست مخطط الاستدعاء.
‫لا أعتقد أنني بحاجة إلى إعادة تشغيل المحرر فعليًا حتى تعمل هذه الوظيفة ، وإغلاق
‫سجل الإخراج لدينا ، والتوجه نحو الجرغول لدينا والبدء في اللعب والتقاطه.
‫دعنا نخرج من هذا القفص ونلصقه في الكوة ويذهبون ، إنه يتحرك لأسفل ، لكنه يتوقف بمجرد سقوط الجرغول
‫، وهذا ليس مثاليًا لأن الجرغول ليس مثبتًا في مكانه والجدار ليس كذلك
‫أسفل تماما.
‫ولأنها تحاكي الفيزياء ، فإنها ستخرج من تلك الكوة ، أليس كذلك؟
‫لذا ما علينا القيام به هو التأكد بمجرد إسقاطه في منطقة الزناد الخاصة بنا ، يتم تثبيته هناك
‫ويبقى فقط.
‫لذلك سيكون هذا موضوع المحاضرة القادمة.
‫سأراك هناك.