‫أهلا ومرحبا.
‫في هذه المحاضرة ، سوف نتعلم كيف يمكننا الحصول على مؤشر للممثل المالك للمكون.
‫سنكتشف ماهية المؤشر ، والعناوين الموجودة في الذاكرة ، وسنقوم
‫بطباعتها في رسائل السجل لدينا أيضًا.
‫دعنا نتعمق.
‫لذلك دعونا نأخذ ثانية لفهم المفهوم الأساسي لما يحدث في البرمجة بشكل عام حول العناوين
‫المتغيرة.
‫ما هو عنوان المتغير؟
‫حسنًا ، نقوم بتخزين جميع متغيراتنا في الذاكرة في شرائح ذاكرة الوصول العشوائي هذه على جهاز الكمبيوتر الخاص بك والمتغيرات تتطلب ذاكرة
‫لتخزين بياناتها.
‫لذا يتطلب رقم الفاصلة العائمة 32 بتًا من البيانات أو 64 ، إذا كان عددًا صحيحًا مزدوجًا ، فإنه يتطلب قدرًا معينًا
‫من الذاكرة.
‫أيضًا ، كلما كان الهيكل لديك أكبر أو كانت الفئات التي لديك أكبر ، مثل الممثلين يمكن أن تكون كبيرة جدًا
‫وتتضمن الكثير من البيانات قد تتطلب حتى بضعة كيلوبايت من الذاكرة لكل ممثل ، أشياء من هذا القبيل.
‫حسنًا ، يجب أن تعيش هذه الذاكرة في مكان ما في هذا الحقل الكبير من البيانات الفارغة وهو بنوك الذاكرة الخاصة بك.
‫وهذا الموقع معروف باسم العنوان.
‫فكيف يعمل هذا في الممارسة؟
‫حسنًا ، تخيل أن لدينا هذا المجال الكبير من الأصفار والآحاد.
‫هذه هي البيانات الموجودة على ذاكرة الوصول العشوائي الخاصة بك.
‫حسنًا ، يحتاج المتغير والمتغير الفاعل المسمى My الفاعل إلى موقع معين داخل
‫تلك الذاكرة مخصص لتخزين البيانات في الممثل.
‫لذلك قد يكون هذا القسم الأحمر من الذاكرة هو المكان الذي نخزن فيه البيانات
‫لهذا الممثل بعينه ، وله عنوان عادةً ما يُشار إليه بالنظام الثنائي أو السداسي العشري الذي هو في الأساس الموقع فقط.
‫إذا بدأت في عد كل البايتات ، كل الآحاد والأصفار هنا ، في الواقع ، نحن في الواقع لا نحسب الآحاد
‫والأصفار.
‫نحسب في خطوات ثمانية ، لكن هذا ليس مهمًا جدًا.
‫نحسب البايت.
‫هذا هو في الأساس العنوان الذي نبدأ منه.
‫نتحدث عن ممثلنا ، ثم كل نوع له حجم معين.
‫لذلك نحن نعلم أن الممثل سيتطلب الكثير من بايتات البيانات.
‫وهذا يخبرنا بمكان العثور على البيانات الخاصة بممثلنا المعين.
‫لذلك لماذا هذا مهم؟
‫حسنًا ، دعنا نلقي نظرة على الموقف الذي قد نرغب فيه في إلقاء نظرة على الممثلين.
‫نريد أن يكون لدينا متغيرين يشيران إلى نفس البيانات.
‫حسنًا ، في الحالة الساذجة ، سنقوم ببساطة بنسخ هذا.
‫إذن لدينا جزء كبير من الذاكرة مخصص لمتغير الفاعلين.
‫لدينا جزء آخر من الذاكرة تم تخصيصه لمتغير فارغ يسمى Your Actor ، والذي
‫لم نخصص له أي شيء بعد.
‫ثم ما نريد القيام به لأننا نريدهم أن يحتويوا على نفس البيانات ، هو أننا نخصص واحدًا
‫للآخر.
‫وهذا يؤدي في الأساس إلى قيامنا فقط بعمل نسخة من جميع أجزاء البيانات التي كانت موجودة في ممثلي
‫ووضعها في جميع الأجزاء التي تشكل ممثلك.
‫لذلك يمكن أن يكون هذا إجراءً مكلفًا إلى حد ما لأن وحدة المعالجة المركزية الخاصة بك يجب أن تمر وتقيّم كل قطعة من
‫الذاكرة في الأصل وتضعها في الموقع الجديد ، الأمر الذي يستغرق وقتًا.
‫الآن هناك طريقة للتغلب على هذا باستخدام شيء يسمى المؤشر.
‫لذا هنا ، بدلاً من تخزين كامل الممثل الخاص بي ، لدينا متغير يسمى الممثل الخاص بي
‫أو الفاعل مؤشر الممثل الذي لا يخزن الممثل بأكمله.
‫إنه يخزن فقط العنوان حيث يمكنك العثور على فعل.
‫لذلك يمكنك أن ترى في الواقع تستهلك ذاكرة أقل بكثير لتخزين عنوان.
‫ثم ما نفعله هو في الممثل الخاص بك ، نقوم بتخزين عنوان الممثل الخاص بي ، لذلك ينتهي الأمر بالإشارة
‫إلى الممثل الأصلي بدلاً من نسخ البيانات ، ومن هنا مؤشر الاسم.
‫الآن هذا ليس بناء الجملة الفعلي في C ++.
‫في C ++ ، تكون البنية أكثر كثافة.
‫نقول أن شيئًا ما هو مؤشر بوضع نجمة بعد النوع.
‫لذا فإن نجم الممثل يعني أن هذا مؤشر ممثل وأنه للحصول على عنوان متغير ، نستخدم علامة العطف ولن نستخدم
‫هذا العنوان كثيرًا حتى الآن نظرًا لوجود الكثير من الوظائف
‫في هذا غير واقعي مؤشرات العودة.
‫لذلك نحتاج فقط إلى معرفة كيفية استخدام هذه المؤشرات بدلاً من إنشائها في الوقت الحالي.
‫لذا فإن إحدى هذه الوظائف التي تسمح لنا بالوصول إلى أشياء أخرى في مشهدنا هي الحصول على مالك.
‫فلماذا ينطبق هذا عندما يكون لدينا مكون ، فهو مملوك لممثل.
‫لذا إذا أردنا أن يتحدث هذا المكون إلى ممثلنا ، للحصول على موقعه ، وتحديد موقعه والقيام بأشياء من هذا القبيل
‫، فعندئذ نحتاج إلى أن نكون قادرين على الحصول على مؤشر لهذا الممثل.
‫لا نريد أن نأخذ نسخة منه.
‫في الواقع ، لا نريد أن نأخذ نسخة منه لأننا نريد تغيير الممثل.
‫إذا كنا نجري تغييرًا على نسخة ، فلن تظهر في الواقع في المشهد.
‫لذلك نحن بحاجة إلى أن نكون قادرين على تخزين متغير يمثل مؤشرًا لممثل.
‫الطريقة التي نقوم بها بذلك ، كما رأينا للتو في الشرائح ، هي أن يكون لدينا نوع ممثل.
‫ولكن بعد ذلك وضعنا نجمة في النهاية تخبرنا أن هذا ليس ممثلاً يتم تخزينه هنا
‫، هذا مجرد عنوان ممثل يتم تخزينه.
‫لذلك نأخذ الممثل وسنقوم بالاتصال بهذا المالك ثم سنقوم بتعيين ذلك مساويًا لنتيجة
‫استدعاء get owner.
‫لذا فإن get owner هي وظيفة مكون ممثل يتيح لك الحصول على مؤشر مالك.
‫احصل على مؤشر ممثل يشير إلى المالك ، ضع فاصلة منقوطة في نهاية هذا السطر.
‫وما لدينا هنا هو متغير يخزن عنوان الممثل الذي يمتلك هذا المكون المحدد.
‫لذا أود أن أتحداك أن تفعل شيئًا عن طريق طباعة عنوان هذا المتغير.
‫لذا استخدم متغير الممثل واستخدم النسبة المئوية التي تقوم بتنسيقها ، وحددها في السجلات.
‫النسبة المئوية تعني أنك تستخدم عددًا صحيحًا بدون إشارة.
‫هذا يعني أن عددًا صحيحًا لا يمكن أن يكون سالبًا ، وهو أمر منطقي لأن العناوين لا يمكن أن تكون
‫سالبة عندما نتحدث عن مكان العثور على الذاكرة ، ثم نكتشف ما الذي يطبعه ، واذهب والعب ، وانظر رسالة
‫السجل ، وانظر ما يطبع.
‫هل يتغير بين المسرحيات المختلفة إذا توقفت عن اللعب وبدأت اللعب مرة أخرى؟
‫وماذا إذا كان المحرك يعمل على عدة ممثلين؟
‫هل هناك عدة عناوين مختلفة مطبوعة في وحدة التحكم؟
‫أوقف الفيديو مؤقتًا وقم بإجراء تحقيق بسيط.
‫تمام.
‫مرحبًا بعودتك.
‫لذلك سننتقل إلى سجل Yule هذا وسنقول مالك المحرك ، العنوان ، نسبة النقطتين
‫، أنت.
‫هذا هو المكان الذي ستضع فيه قيمة المؤشرات.
‫ثم نضع المؤشر الفعلي.
‫لذلك سيكون لدينا المالك هنا.
‫لذلك ستقوم بطباعة عنوان المالك.
‫دعنا ننتقل إلى ما هو غير واقعي.
‫اضغط على مفتاح التحكم ص 11.
‫وعندما ينتهي ذلك من التجميع ، دعنا نضغط على play.
‫وما نراه هو أن عنوان مالك محرك رسائل السجل قادم وهو يعطينا عددًا كبيرًا
‫جدًا بالفعل لهذا العنوان.
‫ماذا لو توقفت عن اللعب ولعبت مرة أخرى لثانية واحدة فقط؟
‫يمكنك أن ترى أن العنوان مختلف تمامًا ، وذلك لأنه في كل مرة نضغط فيها على
‫اللعب ، تقوم Unreal بإنشاء مجموعة جديدة كاملة من الممثلين في المشهد ، جاهزة أساسًا للعب ، بدءًا من نقطة الصفر.
‫لهذا السبب نرى مواقع عناوين جديدة في كل مرة نضغط فيها على play.
‫ماذا يحدث إذا ذهبت إلى هذا العمود ، على سبيل المثال ، وأضفت عنصر المحرك إلى العمود أيضًا ، وقمنا بالضغط على تشغيل
‫والتمرير لأسفل إلى أسفل سجلاتي.
‫يمكنك أن ترى أن هناك كل علامة اختيار عنوانين مختلفين يتم طباعتهما هنا لأن هناك ممثلين
‫مختلفين يتم تخزينهما في موقعين مختلفين في الذاكرة.
‫إذن هذان العنوانان ويمكنك أن ترى أن هناك بالفعل عددًا قليلاً جدًا من الميغابايت
‫من الاختلاف بين هذين العنوانين ، والذي يذهب فقط ليخبرك بكمية المعلومات التي يتم تخزينها
‫في الذاكرة بواسطة Unreal وأيضًا لماذا من المهم أن تكون فعالاً في عدم صنع نسخ كثيرة جدًا.
‫هذا كل شيء في هذه المحاضرة.
‫سأراك في المرحلة التالية حيث سنفعل المزيد من الأشياء الممتعة باستخدام المؤشرات.