‫أهلا ومرحبا.
‫في هذه المحاضرة ، سننظر في المتجهات وبشكل عام أشياء أكثر تعقيدًا مثل
‫الهياكل في C ++ وكيف يمكننا الوصول إلى الأجزاء الفردية لتعيينها والحصول عليها من بنية.
‫دعنا نتعمق.
‫لذلك تعلمنا كيفية التعامل مع أنواع البيانات الأساسية في C ++ وإنشاء متغيرات وتخصيصها وحتى إجراء بعض العمليات
‫الحسابية الأساسية معهم.
‫ولكن ماذا لو أردنا التعامل مع أنواع أكثر تعقيدًا مثل المتجهات والتحويلات؟
‫حسنًا ، العملية متشابهة جدًا في الواقع.
‫لنبدأ بمسح بعض أكواد الاختبار التي لدينا بالفعل.
‫سأقوم بحذف جميع ممتلكاتي.
‫بالنسبة لي ، هذا السطر 26 نزولاً إلى 51.
‫وسأنتقل أيضًا إلى ملف C ++ وأحذف الأسطر من 19 إلى 23 ، حيث أقوم بكل العمل مع تلك المتغيرات
‫التي قمت بحذفها للتو.
‫لذا الآن أصبح بدء اللعب فارغًا تمامًا ونعود إلى المربع الأول بشكل أساسي.
‫والآن ما أريد أن أفعله هو إضافة خاصية جديدة لك.
‫لذا فإن كل الحروف الكبيرة تعدل مرة أخرى في أي مكان وسأعطي هذا النوع من إشعار المتجه F بالأحرف الكبيرة F ، V الكبيرة وهذه هي
‫الطريقة التي نتعامل بها مع المتجهات التي تعاملنا معها في مخطط Blueprint.
‫إنها نفس المتجهات تحت السطح ، لكن هذه هي الطريقة التي نكتبها في C ++.
‫يتيح لنا الحرف F الذي يسبقه معرفة أن هذا هيكل بنفس الطريقة التي تتيح لنا A التي تتابع
‫الانتقال منصة معرفة أن هذا هو ممثل.
‫هذا ليس شيئًا C ++.
‫هذا هو اصطلاح تسمية غير حقيقي لتسمية الفئات والتراكيب والأنواع المختلفة.
‫إذن ما سنفعله هو إعطاء هذا المتغير اسمًا وهذا يعمل تمامًا كما لو كان عددًا
‫عشريًا أو عدد صحيح.
‫يمكننا أن نسميها عوامة ، على سبيل المثال.
‫لا يحتاج إلى مسافات.
‫وإذا وضعنا فاصلة منقوطة في نهاية السطر هنا ، فهذا كل شيء.
‫لقد أعلنا عن متغير جديد سيكون مرئيًا في جزء التفاصيل في المحرر ، لكن هذا لا يكفي بالنسبة
‫لي.
‫أود أن أعطي هذه القيمة الافتراضية التي تختلف عن القيمة الافتراضية 000.
‫للقيام بذلك ، نحتاج إلى تحديث مسردنا بمصطلح جديد.
‫نحتاج إلى مُنشئ ، وهو أساسًا شيء في C ++ يصنع قيمة بنية أو فئة جديدة.
‫لذا ، إذا أردنا إنشاء مُنشئ للمتجه ، فإن الطريقة التي يعمل بها هذا هي أننا نريد تعيين قيمة لذلك
‫نضغط على يساوي.
‫وعادة عندما نتعامل مع الأعداد الصحيحة أو العائمة ، يمكننا استخدام شيء مثل واحد
‫أو صحيح.
‫كانت هناك قيم مدمجة سمحت لنا بتحديد قيمة تلك الأنواع الأساسية.
‫ولكن عندما يكون لدينا أنواع أكثر تفصيلاً مثل البنية ، نحتاج إلى استخدام المُنشئ وسيحمل
‫المُنشئ دائمًا نفس اسم نوع البيانات.
‫لذلك سيكون المتجه f كما هو بالضبط ، ثم تفتح بعض الأقواس وداخل الأقواس
‫تعطي القيم التي تريدها.
‫إذن X و Y و Z هو ما يشكل المتجه.
‫لذلك يمكن أن يكون لدينا واحد واثنان وثلاثة مفصولة بفواصل ، ثم نغلق الأقواس ونضع فاصلة
‫منقوطة في نهاية السطر.
‫وهذا سيعطي قيمة افتراضية هي واحد واثنان وثلاثة في X و Y و Z لهذا المتجه.
‫لنجربها.
‫ارجع إلى Unreal واضغط على زر الترجمة.
‫وبمجرد اكتمال ذلك بنجاح ، يمكننا التأكد من اختيار ممثل النظام الأساسي المتحرك في الخارج
‫وإلقاء نظرة على جزء التفاصيل ونرى أنه بالفعل لدينا خاصية جديدة تسمى My
‫Float.
‫تم حذف القيم الأخرى والقيم في مواضعها المختلفة X و Y و Z هي واحد واثنان وثلاثة
‫، تمامًا كما نتوقعها.
‫هذا رائع.
‫لكن ماذا لو أردت التمسك بهذه القيم ولصقها ربما في خاصية أخرى؟
‫لذا ، إذا كان لدي خاصية أخرى تم تعليمها على أنها تعديل في أي مكان حتى نتمكن من رؤيتها
‫في مفتش النوع float المسمى my x وسنقوم افتراضيًا بذلك على الصفر فقط حتى نتمكن من رؤية أننا نقوم بتغييرها.
‫وما أريد فعله هو الحصول على قيمة x من عوامة عند بدء اللعب وأريد تعيينها في متغير
‫x الخاص بي.
‫لذلك دعونا ننتقل إلى ملف C ++ ونبدأ اللعب بعد السطر الذي يقول إنه كبير جدًا في اللعب
‫، سنقوم بتعيين x الخاص بي مساويًا لما نريد الحصول على شيء من المتجه الخاص بي ، لكننا لا نريد كل
‫متجهي.
‫سيكون ذلك خطأ.
‫لا يمكننا تعيين متجه في عوامة ، نريد فقط الجزء x من هذا المتجه.
‫حسنًا ، لفهم ذلك ، نحتاج إلى فهم مفهوم المشغل.
‫العوامل هي رموز في C ++ تفعل شيئًا ما.
‫لقد رأينا القليل بالفعل.
‫لقد رأينا عامل الجمع ، الذي يجمع شيئين معًا.
‫هناك أيضًا عامل ناقص.
‫هناك عامل المساواة ، عامل التساوي ، الذي يعين.
‫أشياء.
‫لذلك نحن نستخدم هذا هنا في السطر 19.
‫هذا عامل يعين قيمة المتجه إلى X الخاص بي.
‫ومن ثم لدينا عامل آخر ، والذي نحتاج إلى معرفة ما هو عامل التشغيل DOT.
‫إنه عامل يحصل على شيء ما من داخل بنية أو فئة.
‫لذلك نريد الحصول على X من داخل المتجه الخاص بي.
‫لذلك نستخدم عامل النقطة ، ونستخدم النقطة x الآن ، ولا نستخدم مسافة هنا بين المتجه و x.
‫نحن فقط نترك هذه الأشياء تعمل معًا هكذا هكذا نترك الأشياء عادةً على الرغم من أنه ليس من الخطأ بالضرورة
‫وضع مسافات فيها.
‫إذن لدينا المتجه x يجب أن نحصل على قيمة x للمتجه ونضعه في عوامة x الخاصة بي.
‫لذلك وضعنا فاصلة منقوطة في نهاية السطر هناك وكالعادة أتجاهل الخطوط الحمراء لأنها في بعض الأحيان تستغرق
‫وقتًا طويلاً للتحديث وأحيانًا تكون غير صحيحة.
‫وبعد ذلك سنذهب إلى البرمجة الحية ونضغط على الزر الذي يعيد التجميع ونتحقق فقط مما إذا كنا
‫سنحصل على نتيجة ناجحة.
‫ولا ، كما ترى ، لدينا فشل في البناء.
‫وإذا نظرت إلى الخطأ ، فستجد أن الموجه الخاص بي هو معرّف غير معلن وذلك لأنني ارتكبت
‫خطأ إملائيًا.
‫لقد أطلقت على ناقل F اسم عوامة وربما كنت تصرخ على شاشاتك ، لكن من الجيد أن تظهر لك
‫أنه حتى المبرمجين ذوي الخبرة يرتكبون أخطاء.
‫أردنا استدعاء هذا المتجه الخاص بي ، لذلك سأعود إلى ملف الرأس وأعيد
‫تسميته إلى المتجه الخاص بي ، والذي يجب أن يزيل المشكلة في ذهني.
‫دعنا نمضي قدمًا ونضغط على زر الترجمة مرة أخرى.
‫وهذا يمنحك فقط طعمًا لما يبدو عليه الأمر عندما ترتكب أخطاء ، وتحصل على خطأ في التجميع.
‫يحدث ذلك في كل وقت.
‫في الواقع ، من النادر جدًا عدم ارتكاب الأخطاء.
‫في المرة الأولى التي تقوم فيها بشيء ما ، سنمضي قدمًا ونضغط على "تشغيل" وسنرى القيمة التي نحصل عليها
‫في جزء التفاصيل.
‫يمكنك أن ترى الآن أن x الخاص بي قد تم ضبطه على واحد لأن هذه كانت القيمة في المكون x لمتغير المتجه
‫الخاص بي.
‫لذلك أود أن أتحداك لتعيين قيمة متجه.
‫لقد حصلنا على القيم من المتجه.
‫الآن دعنا نحاول وضعها.
‫حاول بشكل أساسي استخدام عامل التشغيل النقطي لتعيين قيمة.
‫حاول قلب الجانبين من هذا يساوي بحيث يكون لدينا X على اليمين والمتجه على اليسار بدلاً
‫من ذلك.
‫وماذا لو غيرتها إلى Y أو Z؟
‫هل يوجد فرق هناك؟
‫أوقف الفيديو واذهب.
‫تمام.
‫مرحبًا بعودتك.
‫لذلك سأحاول قلب هذين الاثنين.
‫دعنا ننتقل إلى C ++ وفي بدء التشغيل بدلاً من ذلك ، ما سأقوله هو أن المتجه ، النقطة y تساوي
‫x ، ثم نضع فاصلة منقوطة في نهاية السطر.
‫وهذه هي الطريقة التي يمكننا بها تعيين القيم داخل بنية أيضًا.
‫لذا دعنا نعود إلى Unreal ونعيد التحويل البرمجي ، ثم يمكننا المضي قدمًا وتحديد بعض القيمة في X الخاص بي.
‫لذا سأضع القيمة خمسة هنا.
‫ثم سأمضي قدمًا وألعب وألقي نظرة على جزء التفاصيل للمنصة المتحركة.
‫وبالتأكيد ، تم تحديث قيمة y للمتجه عند بدء اللعب بالقيمة الموجودة في x الخاص بي.
‫لذا تهانينا.
‫لقد رأينا كيفية استخدام أنواع أكثر تعقيدًا وهي أنواع مركبة مثل البنيات في C ++.
‫سأراك في المحاضرة القادمة.