﻿1
00:00:04,400 --> 00:00:05,210
‫أهلا ومرحبا.

2
00:00:05,210 --> 00:00:10,100
‫في هذه المحاضرة ، سننظر في وظيفة خاصة تسمى المُنشئ الذي يسمح

3
00:00:10,100 --> 00:00:13,790
‫لنا بإعطاء قيم افتراضية للخصائص في صفنا.

4
00:00:13,790 --> 00:00:16,820
‫وسنرى عندما يتم استدعاؤها في المحرر.

5
00:00:16,820 --> 00:00:18,890
‫دعنا نتعمق ونكتشف.

6
00:00:19,430 --> 00:00:25,430
‫الآن ، مع مكون المشغل هذا ، أود إضافة وظيفة مكون التجزئة هنا حتى نتمكن من التحقق

7
00:00:25,430 --> 00:00:32,450
‫من المكونات ، والجهات الفاعلة الأخرى التي تتداخل حاليًا مع مكون المشغل هذا ويمكننا

8
00:00:32,450 --> 00:00:37,010
‫التنشيط إذا كان هو النوع الصحيح من الممثلين.

9
00:00:37,550 --> 00:00:39,890
‫المشكلة ، حسنًا ، سنرى ما هي المشكلة.

10
00:00:39,890 --> 00:00:41,870
‫دعونا نحاول تنفيذ وظيفة التجزئة.

11
00:00:41,870 --> 00:00:48,110
‫إذا انتقلنا إلى الاستيلاء H لمعرفة الشكل الذي يجب أن يبدو عليه إعلان وظيفة مكون التجزئة

12
00:00:48,110 --> 00:00:50,690
‫، فيجب أن يكون في القسم العام.

13
00:00:50,690 --> 00:00:53,450
‫إنه فراغ افتراضي ، مكون علامة ، زمن دلتا.

14
00:00:53,450 --> 00:00:56,000
‫هناك الكثير من المعلمات ، لذا دعنا ننسخها فقط.

15
00:00:56,030 --> 00:01:04,430
‫انتقل إلى رأس مكون التجزئة ، وأضفه أسفل بدء التشغيل ، ثم سنقوم بنسخ هذا التعريف

16
00:01:04,430 --> 00:01:08,570
‫، وتوليه إلى مكون المشغل الخاص بنا.

17
00:01:08,570 --> 00:01:13,280
‫CP والشيء الوحيد الذي نلاحظه هو أن هناك بضع كلمات رئيسية هنا يمكننا إزالتها.

18
00:01:13,280 --> 00:01:15,140
‫يمكننا إزالة الكلمة الأساسية الافتراضية.

19
00:01:15,140 --> 00:01:17,030
‫هذه قاعدة عامة يمكننا اتباعها.

20
00:01:17,030 --> 00:01:19,430
‫يمكننا أيضا إزالة تجاوز الكلمة الأساسية.

21
00:01:19,430 --> 00:01:22,040
‫هذه أشياء لا يلزم أن تكون في ملف C ++.

22
00:01:22,190 --> 00:01:24,770
‫نحن بحاجة إلى إضافة اسم الفصل.

23
00:01:24,770 --> 00:01:26,330
‫لذلك تقوم بتشغيل القولون المكون.

24
00:01:26,330 --> 00:01:27,380
‫القولون.

25
00:01:27,830 --> 00:01:35,870
‫ثم نستبدل الفاصلة المنقوطة ببعض الأقواس ونحتاج إلى إجراء استدعاء لمكون التجزئة الفائق.

26
00:01:35,870 --> 00:01:43,460
‫لذلك لأن هذه مكالمة طويلة جدًا ، سأقوم بنسخها من جهاز CP الخاص بنا وألصقه في هذا.

27
00:01:43,460 --> 00:01:49,040
‫الآن ما يفعله هذا هو أنه يستدعي بشكل أساسي وظيفة مكون التجزئة للوالد.

28
00:01:49,040 --> 00:01:52,880
‫إذن فالوالد في هذه الحالة هو مكون الصندوق الخاص بنا.

29
00:01:52,880 --> 00:02:00,050
‫لذلك من المهم استدعاء ذلك في حالة وجود أي وظيفة هناك يجب استخدامها وتمكينها حتى يعمل

30
00:02:00,050 --> 00:02:01,580
‫هذا المكون.

31
00:02:01,580 --> 00:02:06,890
‫إذا لم نفعل ذلك ، فإننا في الأساس نتجاوز أيًا من تلك الوظائف ويمكن أن تتعطل الأشياء.

32
00:02:06,890 --> 00:02:12,980
‫لذلك من المهم جدًا أن تتذكر دائمًا الاتصال بـ super عندما ننفذ مكون البدء واللعب

33
00:02:12,980 --> 00:02:13,820
‫والعلامة.

34
00:02:13,820 --> 00:02:17,750
‫لنقم الآن بنسخ رسالة السجل الخاصة بنا من بدء اللعب ووضعها في مكون التجزئة.

35
00:02:17,750 --> 00:02:25,040
‫وبدلاً من قول تسجيل مكون التجزئة والقول إن مكون التجزئة يعمل هنا وسنمضي قدمًا ونقوم بالتجميع ونرى

36
00:02:25,100 --> 00:02:30,740
‫ما إذا كانت هذه العلامة تعمل بالفعل بمجرد انتهاء المترجم ، دعنا نمضي قدمًا

37
00:02:30,740 --> 00:02:34,160
‫ونضرب التشغيل ، وافتح مخرجاتنا تسجيل و.

38
00:02:34,190 --> 00:02:37,400
‫حسنًا ، لا شيء يحدث الآن.

39
00:02:37,400 --> 00:02:43,910
‫والسبب في ذلك هو أنه من ناحية التحسين ، يتم إيقاف تشغيل العلامة تلقائيًا وغير الواقعية

40
00:02:43,910 --> 00:02:45,530
‫لمعظم المكونات.

41
00:02:45,530 --> 00:02:49,880
‫لذلك عادةً ما يتم تشغيله من قبل الممثلين بشكل افتراضي ، لكن المكونات عادةً ما يتم إيقاف تشغيلها.

42
00:02:49,880 --> 00:02:54,890
‫لذا في الحقيقة ، إذا نظرنا إلى بعض المكونات الأخرى التي لدينا مثل حركتنا التي نعلم أن وضع

43
00:02:54,890 --> 00:02:58,610
‫العلامات يعمل من أجلها ، يمكنك أن ترى أنه يوجد هذا في أعلى الملف.

44
00:02:58,610 --> 00:03:06,950
‫يمكنك نقل وظيفة ولديها علامة التجزئة للمكون الأساسي ، يمكن أن تكون النقطة B في أي وقت تساوي صحيحًا إذا لم

45
00:03:06,950 --> 00:03:09,740
‫تقم بتعيين هذه الخاصية على الفئة.

46
00:03:09,740 --> 00:03:15,320
‫لذا فهذه خاصية للفئة كخاصية لعلامة التجزئة للمكون الأساسي الكلاسيكي وهي بنية

47
00:03:15,320 --> 00:03:19,340
‫تحتوي على خاصية B يمكن تحديدها من أي وقت مضى داخلها.

48
00:03:19,490 --> 00:03:28,490
‫إذن ما نفعله هنا هو أننا نضع هذه القيمة الافتراضية على فئة المحرك عندما نبنيها.

49
00:03:28,490 --> 00:03:29,660
‫هذا ما هي هذه الوظيفة.

50
00:03:29,660 --> 00:03:37,100
‫يطلق عليه مُنشئ وهو دالة يتم استدعاؤها عندما نقوم بإنشاء مكون محرك جديد لتعيين القيم الافتراضية

51
00:03:37,100 --> 00:03:42,950
‫تلقائيًا ، يمكننا تعيين بعض القيم الافتراضية في ملف الرأس كما فعلنا مع يجب

52
00:03:42,950 --> 00:03:44,750
‫نقل وقت النقل.

53
00:03:44,750 --> 00:03:50,360
‫لكن البديل عن القيام بذلك في ملف الرأس هو أنه يمكننا بالفعل تعيين هذه الخصائص

54
00:03:50,360 --> 00:03:51,800
‫في المنشئ.

55
00:03:51,800 --> 00:03:57,350
‫الآن أود أن تلاحظ بناء الجملة هنا ننتقل إلى نقل ملف الرأس.

56
00:03:57,350 --> 00:04:03,320
‫يمكنك أن ترى أن المُنشئ تمت تسميته تمامًا مثل الفئة.

57
00:04:03,320 --> 00:04:12,350
‫لذا فإن محركك هو اسم الفئة لمكون المحرك الخاص بنا ويسمى مُنشئه أيضًا إشعار المحرك.

58
00:04:12,350 --> 00:04:14,630
‫ليس لديها نوع العودة أيضا.

59
00:04:14,630 --> 00:04:19,490
‫ليس من المنطقي إعادة أي شيء لأننا نقوم ببناء كائن جديد.

60
00:04:19,490 --> 00:04:22,820
‫نحن فقط نجعل هذا الفصل يحدث.

61
00:04:22,820 --> 00:04:30,560
‫لذلك كل ما نحتاجه هو الوصول إلى خصائص هذه الفئة ونلاحظ أيضًا أنه تم تعيينها للجمهور.

62
00:04:30,560 --> 00:04:35,180
‫لذلك فهو موجود في القسم العام من تعريف الفصل لدينا.

63
00:04:35,180 --> 00:04:39,470
‫لذلك أود أن أتحداك لتمكين وضع العلامات لنفسك.

64
00:04:39,470 --> 00:04:44,720
‫لذلك ستنشئ مُنشئًا في الرأس وتضع في اعتبارك أن بناء الجملة الذي رأيناه في

65
00:04:44,720 --> 00:04:52,130
‫كل من المحرك H والاستيلاء على الكثير من H ، ستقوم بتمكين وضع العلامات كما رأينا مرة أخرى في تلك المكونات

66
00:04:52,130 --> 00:04:54,620
‫الأخرى في ملفات CP الخاصة بهم.

67
00:04:54,620 --> 00:04:57,140
‫لذا يمكنك فقط نسخ كيفية القيام بذلك.

68
00:04:57,290 --> 00:05:02,450
‫يمكنك تسجيل الدخول من المنشئ أيضًا لمحاولة معرفة متى يتم استدعاؤها؟

69
00:05:02,450 --> 00:05:03,610
‫هل هو مثل بدء اللعب؟

70
00:05:03,780 --> 00:05:07,290
‫أم يتم استدعاؤها قبل بدء اللعب أم ماذا؟

71
00:05:07,320 --> 00:05:09,840
‫اذهب وأوقف الفيديو واذهب.

72
00:05:12,920 --> 00:05:13,310
‫كاي.

73
00:05:13,310 --> 00:05:14,100
‫مرحبًا بعودتك.

74
00:05:14,120 --> 00:05:21,320
‫لذلك سننتقل إلى مكونات المثلثات الخاصة بنا ، والتي ستنشئ قسمًا عامًا جديدًا هنا.

75
00:05:22,070 --> 00:05:26,630
‫نتذكر النقطتين في النهاية ثم نحتاج إلى تسميته تمامًا مثل الفصل.

76
00:05:26,630 --> 00:05:28,040
‫لذلك هذا ليس عنصر الزناد.

77
00:05:28,040 --> 00:05:33,320
‫لا تقوم بتشغيل المكون بالكامل.

78
00:05:33,320 --> 00:05:39,770
‫ومن ثم ليس لدينا أي حجج لهذا المنشئ ، لذلك نضع أقواسًا فارغة فقط ثم فاصلة منقوطة

79
00:05:39,770 --> 00:05:41,600
‫في نهاية السطر.

80
00:05:41,600 --> 00:05:46,880
‫الآن يمكننا الانتقال إلى ملف CPP ويمكننا إجراء التنفيذ هنا.

81
00:05:46,880 --> 00:05:48,290
‫مرة أخرى ، لا نحتاج إلى نوع إرجاع.

82
00:05:48,290 --> 00:05:57,560
‫إذاً ، فقط تقوم بتشغيل مكون القولون ، القولون ، تقوم بتشغيل المكون بشكل متكرر بعض الشيء ، ولكن هذه هي الطريقة التي

83
00:05:57,560 --> 00:05:58,550
‫يعمل بها.

84
00:05:58,550 --> 00:06:05,420
‫ثم نضع بعض الأقواس المتعرجة وهنا يمكننا القيام بأي من كود الإعداد الخاص بنا لإعطاء القيم الافتراضية

85
00:06:05,420 --> 00:06:07,280
‫لمثيل الفصل.

86
00:06:07,280 --> 00:06:12,530
‫لذلك إذا انتقلنا إلى الاستيلاء على CPP وألقينا نظرة على ما يفعله ، يمكنك أن ترى أنه

87
00:06:12,530 --> 00:06:16,670
‫قد حصل على مكونه الأساسي ، يمكن أن تكون النقطة B مساوية لـ true.

88
00:06:16,670 --> 00:06:17,840
‫لذلك دعونا نكتب ذلك.

89
00:06:17,840 --> 00:06:23,540
‫العنصر الأساسي علامة النقطة ب يمكن تحديد أي وقت مضى.

90
00:06:23,540 --> 00:06:31,520
‫B هي مجرد بادئة نستخدمها غالبًا عندما يكون للأشياء نوع منطقي يساوي true مع حرف t صغير.

91
00:06:31,670 --> 00:06:38,720
‫لذلك نظرًا لأن التغييرات التي يتم إجراؤها على المُنشئ لا يتم دائمًا نشرها بشكل صحيح في الترميز المباشر

92
00:06:38,720 --> 00:06:39,980
‫، سأغلق المحرر.

93
00:06:40,100 --> 00:06:47,000
‫سأقوم بإعادة البناء من داخل كود Visual Studio ، ثم سأعيد التشغيل من ملف مشروع الاتحاد الأوروبي.

94
00:06:47,000 --> 00:06:52,160
‫عند الانتهاء من ذلك ، سأقوم بالضغط على التشغيل ، وإلقاء نظرة على سجل الإخراج لدينا وبالتأكيد

95
00:06:52,160 --> 00:06:54,890
‫، يمكننا أن نرى أن مكون المشغل يعمل.

96
00:06:55,130 --> 00:07:00,230
‫لذلك سأقوم بإزالة رسالة السجل هذه لأنها مزعجة وأغلق سجل الإخراج في كود Visual

97
00:07:00,230 --> 00:07:04,460
‫Studio ، وقم بإزالة رسالة السجل هذه في مكون التجزئة.

98
00:07:04,460 --> 00:07:06,020
‫يمكننا أن نرى أنه يعمل الآن.

99
00:07:06,410 --> 00:07:10,910
‫وما أردنا فعله هو عمل سجل في المُنشئ الخاص بنا.

100
00:07:11,720 --> 00:07:17,990
‫لذا ، لنقم بسجل جديد يقول الإنشاء ، ونرى ما إذا كان بإمكان البرمجة الحية أن تلتقطها هذه المرة

101
00:07:17,990 --> 00:07:21,680
‫، ثم سنذهب إلى سجل الإخراج ونلقي نظرة على الفور.

102
00:07:21,680 --> 00:07:23,750
‫لا شيء يظهر هنا.

103
00:07:24,170 --> 00:07:28,370
‫حسنًا ، إذا تقدمت وضغطت على التشغيل ، فإني ألقي نظرة على سجل الإخراج الخاص بي.

104
00:07:28,370 --> 00:07:33,980
‫أستطيع أن أرى رسالة السجل التي مفادها أن مكون المشغل على قيد الحياة وقبل ذلك بوقت طويل.

105
00:07:33,980 --> 00:07:39,020
‫في الواقع ، يمكنك أن ترى أنه يبني الطريق إلى الأمام عندما يكون مجرد إنشاء العالم.

106
00:07:39,020 --> 00:07:44,630
‫يبدأ البناء في وقت مبكر جدًا قبل أن نبدأ اللعب بشكل واضح لأننا نحتاج إلى تجهيز العالم

107
00:07:44,630 --> 00:07:46,400
‫كله قبل أن نبدأ اللعب.

108
00:07:46,400 --> 00:07:51,440
‫هذا يحدث عندما نضغط على زر التشغيل ، ولكن في الحقيقة يحدث هذا أيضًا في المحرر.

109
00:07:51,440 --> 00:07:58,130
‫لذلك إذا قمت بتحديد أحد الممثلين هنا ثم قمت بإضافة مكون إليه وإضافة المشغل الخاص بنا ، فقم بإلقاء نظرة على سجل

110
00:07:58,130 --> 00:07:59,300
‫الإخراج الخاص بي.

111
00:07:59,300 --> 00:08:03,050
‫ثم يمكنك رؤية الرسالة الإنشائية تمت طباعتها بالفعل.

112
00:08:03,050 --> 00:08:10,490
‫لذلك نحن بحاجة إلى توخي الحذر فيما نفعله في المُنشئين لدينا لأنهم في الواقع يطلق عليهم رمز C ++ ، يتم استدعاءه

113
00:08:10,490 --> 00:08:14,540
‫فقط عندما نقوم بالتحرير ، ولا حتى أثناء لعب لعبتنا.

114
00:08:14,540 --> 00:08:20,000
‫يتم إنشاء هذه الكائنات وبالتالي إعدادها وبالتالي تحتاج إلى استدعاء مُنشئها.

115
00:08:20,090 --> 00:08:25,880
‫سأمضي قدمًا وأحذف المشغل مرة أخرى وقم بإزالة المشغل قليلاً عن طريق إزالة

116
00:08:25,880 --> 00:08:30,170
‫رسالة سجل الإنشاء ورسالة سجل بدء التشغيل أيضًا.

117
00:08:30,170 --> 00:08:30,800
‫أشياء عظيمة.

118
00:08:30,800 --> 00:08:37,430
‫لقد رأينا في هذه المحاضرة كيف يمكننا إعداد المكونات الخاصة بنا بحيث تكون متطابقة تقريبًا

119
00:08:37,430 --> 00:08:42,320
‫مع المكونات التي تم إنشاؤها في قوالب مكونات المشهد ومكونات ACT ، رأينا

120
00:08:42,320 --> 00:08:47,720
‫كيفية استخدام المُنشئ لإعطاء القيم الافتراضية إلى خصائص في صفنا.

121
00:08:47,720 --> 00:08:49,610
‫سأراك في المحاضرة القادمة.

