﻿1
00:00:04,370 --> 00:00:05,390
‫أهلا ومرحبا.

2
00:00:05,390 --> 00:00:12,170
‫في هذه المحاضرة ، سنقوم بإعداد الرابط بين المحرك والمحفز باستخدام تقنية تسمى حقن

3
00:00:12,170 --> 00:00:18,230
‫التبعية بحيث في نهاية المحاضرة ، إذا وضعنا الغرغرة ، يتحرك الباب لأسفل

4
00:00:18,230 --> 00:00:20,810
‫، أو على الأقل يفعل جزئيا.

5
00:00:20,810 --> 00:00:24,260
‫دعونا نتعمق ونرى كيف يعمل هذا.

6
00:00:25,080 --> 00:00:26,460
‫وأخذ فنجان.

7
00:00:26,490 --> 00:00:33,030
‫لقد رأينا أن هناك تبعية ، ما نسميه تبعية مقبض الفيزياء.

8
00:00:33,030 --> 00:00:40,350
‫لا يمكن لهذا المنتزع القيام بعمله ما لم يكن لديك مكون مقبض فيزيائي في مكان ما حوله الآن ، لذا يحدث

9
00:00:40,350 --> 00:00:42,960
‫أن يكون مكون المشغل هو نفسه.

10
00:00:42,960 --> 00:00:50,100
‫يحتاج مكون المشغل ، من أجل القيام بعمله بشكل صحيح ، إلى الوصول إلى مكون المحرك.

11
00:00:50,460 --> 00:00:57,360
‫ومع ذلك ، فإن الأمر أصعب قليلاً في هذه الحالة لأنه بالتأكيد ، في حالة بابنا

12
00:00:57,360 --> 00:01:02,400
‫السري ، يكون المشغل والجسم المتحرك داخل نفس الممثل.

13
00:01:02,730 --> 00:01:08,220
‫لذلك يمكنك الحصول على كائن من خلال إيجاد مكون من نوع على الممثل.

14
00:01:08,220 --> 00:01:14,490
‫ولكن ماذا لو كان لدينا هذا الموقف في السيناريو الخاص بي حيث أريد أن يكون المشغل الخاص

15
00:01:14,490 --> 00:01:20,760
‫بي في جزء مختلف من الغرفة عن الممثل الذي يتحرك جيدًا للسماح بهذا النوع من المرونة.

16
00:01:20,760 --> 00:01:26,940
‫نريده بحيث لا يضطر المشغل للذهاب والعثور على تبعياته الخاصة.

17
00:01:26,940 --> 00:01:30,330
‫وهناك في الواقع اسم لهذا النوع من مفهوم البرنامج.

18
00:01:30,330 --> 00:01:32,640
‫يطلق عليه حقنة التبعية.

19
00:01:32,640 --> 00:01:37,680
‫في الأساس ، إنه في الحالة التي يكون لدينا فيها شيء يقول ، أحتاج إلى كائن آخر ، لكن لا يمكنني

20
00:01:37,680 --> 00:01:40,230
‫العثور عليه بنفسي أو لا أريد أن أجده بنفسي.

21
00:01:40,290 --> 00:01:47,940
‫وغالبًا ما يكون من المعقول عدم ترك الأمر للكائن الذي يقوم بعمله الخاص ، مما يجعله يقوم بوظيفة أخرى

22
00:01:47,940 --> 00:01:50,850
‫تتمثل في محاولة الحصول على شيء ما.

23
00:01:51,300 --> 00:02:00,810
‫لذا فإن الطريقة التي يمكننا بها القيام بذلك هي إنشاء آلية للمخططات لإخبار مكون المشغل بمكان العثور

24
00:02:00,810 --> 00:02:02,730
‫على المحرك.

25
00:02:02,910 --> 00:02:09,330
‫والطريقة التي سنقوم بها هي من خلال إنشاء دالة مخطط قابلة للاستدعاء في مكون المشغل الخاص بنا.

26
00:02:09,810 --> 00:02:11,220
‫لذلك ستكون عامة.

27
00:02:11,220 --> 00:02:16,980
‫سنضعها في القسم العام أسفل مكون التجزئة ، وستكون دالة U بحيث

28
00:02:16,980 --> 00:02:22,710
‫يمكن أن تكون بعد ذلك بين قوسين ، مخطط قابل للاستدعاء.

29
00:02:23,280 --> 00:02:26,130
‫ولا داعي لأن يكون هناك الكثير من هذه الوظيفة.

30
00:02:26,130 --> 00:02:33,330
‫سيكون باطلاً لأنه لا يحتاج إلى إرجاع شيء ما ، ولكن سيتم تعيينه ، لذلك

31
00:02:33,330 --> 00:02:40,860
‫سيتم تعيين رابط للمحرك ومن أجل تعيين رابط للمحرك ، فإنه يحتاج إلى تأخذ

32
00:02:40,860 --> 00:02:43,620
‫في مؤشر لمكون المحرك.

33
00:02:43,620 --> 00:02:51,540
‫لذلك ستكون أنت نجم المحرك ويمكننا فقط أن نسمي هذا المحرك مثل ذلك ونضع فاصلة منقوطة في نهاية ذلك

34
00:02:51,540 --> 00:02:52,440
‫السطر.

35
00:02:52,830 --> 00:02:55,350
‫ونحن بحاجة لتخزين هذا في مكان ما.

36
00:02:55,350 --> 00:02:57,300
‫لذلك سنقوم بإنشاء متغير خاص جديد.

37
00:02:57,300 --> 00:03:02,280
‫لن تكون خاصية جديدة وستكون مجرد مؤشر متحرك على شكل حرف U ، والذي سنطلق

38
00:03:02,280 --> 00:03:04,530
‫عليه اسم المحرك أيضًا.

39
00:03:04,560 --> 00:03:12,900
‫مثل ذلك وما سنفعله هو تنفيذ هذه المجموعة في CPP بحيث تحدد هذه الحركة مؤشرًا ، والذي

40
00:03:12,900 --> 00:03:15,660
‫سيكون افتراضيًا فارغًا.

41
00:03:16,050 --> 00:03:17,790
‫وعلينا فعل شيء آخر.

42
00:03:17,790 --> 00:03:20,640
‫يجب علينا تضمين ملف الرأس للمحرك الخاص بنا.

43
00:03:21,150 --> 00:03:26,370
‫الآن في هذه الحالة ، نظرًا لأن ملف الرأس موجود في نفس المجلد

44
00:03:26,370 --> 00:03:36,870
‫مثل مكون المشغل ، كل ما يتعين علينا القيام به هو تضمين علامة اقتباس المحرك H وهذا سوف نتأكد من أن مكون المشغل على دراية بنوع

45
00:03:36,870 --> 00:03:38,100
‫المحرك.

46
00:03:38,280 --> 00:03:40,230
‫فلننتقل إلى مكون المشغل.

47
00:03:40,230 --> 00:03:46,530
‫CP وسأضع هذا أسفل مكون التجزئة الذي سنقوم بتطبيق مجموعة المحرك.

48
00:03:46,530 --> 00:03:52,500
‫سنضع الفئة التي قمت بتشغيل المكون قبلها ونضع مسافة بادئة لها.

49
00:03:53,400 --> 00:03:55,590
‫أزل الفاصلة المنقوطة وأضف الأقواس.

50
00:03:55,590 --> 00:04:00,150
‫وبشكل أساسي ، كل ما يتعين علينا القيام به هنا ، دعنا نغير الاسم فقط في ملف C ++.

51
00:04:00,150 --> 00:04:06,060
‫لا يهم في الواقع ما إذا كان اسم المعلمات يتطابق بين header و C ++.

52
00:04:06,060 --> 00:04:12,540
‫لذا يمكننا تغييره هنا والقول إن المحرك الجديد هو ما سيأتي ليحرك.

53
00:04:12,630 --> 00:04:20,010
‫ومن ثم يمكننا ضبط المتغير المحلي ، محرك متغير الفئة لدينا يساوي المحرك الجديد مثل.

54
00:04:20,010 --> 00:04:27,030
‫لذا من المهم جدًا الآن ألا تتخطى خطوة إعادة التسمية هذه لأنه إذا كانت معلمة الإدخال

55
00:04:27,030 --> 00:04:34,170
‫هي نفس اسم أحد المتغيرات في الفئة ، فإن غير الواقعي افتراضيًا سيحدد ذلك ليكون خطأ.

56
00:04:34,170 --> 00:04:39,720
‫يطلق عليه التظليل ولا يريدك Unreal أن تفعل ذلك ، لذلك تحتاج إلى التأكد من أن لديك اسم المعلمة

57
00:04:39,720 --> 00:04:44,970
‫بشكل مختلف عن المتغير الآن لأن هذه الوظائف الجديدة لا تظهر دائمًا مع تغييرات الترميز

58
00:04:44,970 --> 00:04:46,260
‫المباشرة.

59
00:04:46,260 --> 00:04:52,290
‫سأقوم بإغلاق المحرر المعاد تجميعه من كود Visual Studio ثم إعادة التشغيل من المشروع

60
00:04:52,290 --> 00:04:52,920
‫الجديد.

61
00:04:52,950 --> 00:04:58,950
‫الآن دعنا ننتقل إلى درج المحتوى ، ونفتح مخطط الحائط السري الخاص بنا ، ثم من

62
00:04:58,950 --> 00:05:06,080
‫عقدة Begin Play في الرسم البياني للحدث ، دعنا ننطلق من هنا ونبحث عن المحرك الثابت.

63
00:05:06,090 --> 00:05:08,190
‫لاحظ الآن أن هناك خيارين هنا.

64
00:05:08,190 --> 00:05:15,750
‫الأول ، هو تعيين المكون الذي يسمى أيضًا المحرك ، والآخر هو وظيفة في مكون المشغل.

65
00:05:15,750 --> 00:05:18,840
‫لذلك نريد تحديد الوظيفة التي تعمل في مكون المشغل.

66
00:05:19,050 --> 00:05:27,120
‫ثم ما نريد القيام به هو السحب في مكون المحرك الخاص بنا باعتباره الوسيطات الأخرى لهذه الوظيفة وهذا يجب أن

67
00:05:27,120 --> 00:05:28,110
‫يؤدي الغرض.

68
00:05:28,110 --> 00:05:31,350
‫تم ضبط المحرك عند بدء اللعب.

69
00:05:31,350 --> 00:05:37,800
‫إذن ما نريد أن يحدث الآن بشكل أساسي هو أن مكون المشغل الخاص بنا يجب أن

70
00:05:37,800 --> 00:05:41,400
‫يضبط ويضبط يجب أن يتحرك منطقيًا هنا.

71
00:05:41,400 --> 00:05:46,110
‫لذلك سيكون هذا هو التحدي الذي أواجهه في إنشاء بعض الوظائف العامة في المحرك والمحرك.

72
00:05:46,110 --> 00:05:51,780
‫يجب تعيين CP يجب أن يتحرك ويجب أن يقوم بتحديث متغير الخاصية.

73
00:05:51,780 --> 00:05:56,970
‫في الواقع ، يمكنك جعله ليس خاصية جديدة بعد الآن لأننا سنقوم بإعداده من خلال الكود

74
00:05:56,970 --> 00:05:59,760
‫الآن وبعد ذلك يمكنك وضعه في القسم العام.

75
00:05:59,760 --> 00:06:04,740
‫يجب أن يكون عامًا لأننا سنحاول الوصول إليه من مكون المشغل الخاص بنا.

76
00:06:04,740 --> 00:06:11,850
‫ويمكنك تسميته على مؤشر المحرك الذي حصلنا عليه في مكون المشغل من إعداد مكون التجزئة الخاص به

77
00:06:11,850 --> 00:06:18,960
‫، والمنطقي المناسب ، سواء أردنا فتحه أو قفله مرة أخرى ، وإيقاف الفيديو مؤقتًا والاستمتاع.

78
00:06:22,250 --> 00:06:23,690
‫حسنًا ، مرحبًا بعودتك.

79
00:06:23,690 --> 00:06:29,410
‫لذا سأقوم بإزالة الخاصية من يجب أن أنقل سأذهب إلى القسم

80
00:06:29,420 --> 00:06:39,800
‫العام أسفل مكون TTIC وسأقوم بإنشاء مجموعة فراغ يجب أن تتحرك مع الأخذ في الاعتبار المنطقي الذي

81
00:06:39,800 --> 00:06:43,010
‫سنسميه يجب تتحرك هكذا.

82
00:06:43,280 --> 00:06:51,560
‫وبعد ذلك سنأخذ هذا وننتقل إلى الخطوة CP وننفذها ، مع استبدال الفاصلة المنقوطة ،

83
00:06:51,560 --> 00:07:00,920
‫وإضافة القولون ، وصنف القولون ، ثم مرة أخرى يمكننا بشكل أساسي أن نسمي هذا الجديد الذي يجب أن

84
00:07:00,920 --> 00:07:08,030
‫يتحرك ويمكننا أن نقول ذلك يجب أن يتحرك يساوي الجديد يجب أن يتحرك.

85
00:07:08,030 --> 00:07:12,860
‫الآن قد تتساءل ، لماذا لا نجعل المتغيرات نفسها متاحة للجمهور حتى نتمكن

86
00:07:12,860 --> 00:07:14,660
‫من تعيينها مباشرة؟

87
00:07:14,780 --> 00:07:22,520
‫هذه ليست ممارسة جيدة بشكل عام في C ++ لأنك إذا سمحت لشخص ما بتغيير متغيراتك ، فلن تعرف أبدًا

88
00:07:22,520 --> 00:07:24,620
‫ما يمكن أن يحدث له.

89
00:07:24,620 --> 00:07:32,090
‫بينما إذا كانت لديك طريقة للقيام بذلك نيابةً عنك ، فإنها تتيح لك لاحقًا تغيير كيفية هيكلة المتغيرات الداخلية دون

90
00:07:32,090 --> 00:07:38,240
‫الحاجة إلى تغيير وظائفك العامة ، مما يعني أن هناك عددًا أقل من التحديثات للفئات المختلفة التي

91
00:07:38,240 --> 00:07:39,920
‫يتعين عليك القيام بها.

92
00:07:39,920 --> 00:07:46,070
‫لذلك بشكل عام ، كقاعدة عامة ، نستخدم دائمًا المحددات والمعرفات إذا احتجنا إلى الوصول إلى المتغيرات في الفئات

93
00:07:46,070 --> 00:07:46,850
‫الأخرى.

94
00:07:46,850 --> 00:07:52,100
‫والآن بعد أن أنشأنا هذه الوظيفة الجديدة ، دعنا ننتقل إلى مكون المثلث CP حيث لدينا حاليًا

95
00:07:52,100 --> 00:07:53,570
‫رسائل السجل الخاصة بنا.

96
00:07:53,570 --> 00:08:01,670
‫ما نريد القيام به هو الوصول إلى مؤشر المحرك الخاص بنا ، لذلك سنقوم بتحريك مجموعة سهم المحرك.

97
00:08:01,670 --> 00:08:06,140
‫وفي حالة وجود ممثل مقبول ، يجب أن يكون هذا صحيحًا.

98
00:08:06,140 --> 00:08:08,600
‫يجب أن نحرك الفاصلة المنقوطة في نهاية السطر.

99
00:08:08,690 --> 00:08:12,200
‫وفي حالة أخرى ، حسنًا ، ربما لا ينبغي لنا ذلك.

100
00:08:12,200 --> 00:08:20,510
‫لذلك سنقوم بتحريك مجموعة الأسهم ويجب أن تتحرك بين قوسين ونضع كاذبة إزالة ذلك R الإضافي الذي كان لدي في نهاية

101
00:08:20,510 --> 00:08:26,780
‫طريقي ودعنا نعيد التحويل البرمجي الآن في هذه الحالة لأنني أضفت هذه الوظيفة فقط

102
00:08:26,780 --> 00:08:30,020
‫في أرض C ++ و انها ليست مخطط الاستدعاء.

103
00:08:30,020 --> 00:08:34,940
‫لا أعتقد أنني بحاجة إلى إعادة تشغيل المحرر فعليًا حتى تعمل هذه الوظيفة ، وإغلاق

104
00:08:34,940 --> 00:08:39,530
‫سجل الإخراج لدينا ، والتوجه نحو الجرغول لدينا والبدء في اللعب والتقاطه.

105
00:08:39,770 --> 00:08:49,400
‫دعنا نخرج من هذا القفص ونلصقه في الكوة ويذهبون ، إنه يتحرك لأسفل ، لكنه يتوقف بمجرد سقوط الجرغول

106
00:08:49,400 --> 00:08:56,600
‫، وهذا ليس مثاليًا لأن الجرغول ليس مثبتًا في مكانه والجدار ليس كذلك

107
00:08:56,600 --> 00:08:59,060
‫أسفل تماما.

108
00:08:59,150 --> 00:09:03,020
‫ولأنها تحاكي الفيزياء ، فإنها ستخرج من تلك الكوة ، أليس كذلك؟

109
00:09:03,020 --> 00:09:10,580
‫لذا ما علينا القيام به هو التأكد بمجرد إسقاطه في منطقة الزناد الخاصة بنا ، يتم تثبيته هناك

110
00:09:10,580 --> 00:09:11,780
‫ويبقى فقط.

111
00:09:11,780 --> 00:09:14,210
‫لذلك سيكون هذا موضوع المحاضرة القادمة.

112
00:09:14,210 --> 00:09:15,200
‫سأراك هناك.

