﻿1
00:00:03,980 --> 00:00:05,210
‫أهلا ومرحبا.

2
00:00:05,210 --> 00:00:11,840
‫في هذه المحاضرة ، سنأخذ فوضى المخططات الخاصة بنا وننظمها بدقة في وظائف

3
00:00:11,840 --> 00:00:17,870
‫حتى نتمكن بسهولة من قراءة وفهم ما يجري في مخطط حدث مخطط الأحداث.

4
00:00:17,870 --> 00:00:19,850
‫دعنا نتعمق ونرى كيفية القيام بذلك.

5
00:00:20,600 --> 00:00:26,030
‫الآن ، إذا قمنا بالتصغير على الرسم البياني للأحداث ، يمكننا أن نرى أنه بدأ في الحصول على ضوضاء كبيرة.

6
00:00:26,030 --> 00:00:28,610
‫يمكنني أيضًا رؤية عقدتين غير متصلتين بأي شيء.

7
00:00:28,610 --> 00:00:34,340
‫هناك عقدة Get سأقوم بحذفها ، أحد الأصول ، عقدة M0 ، لكن يمكنك أن ترى أنها أصبحت مزعجة للغاية.

8
00:00:34,340 --> 00:00:36,860
‫أصبح من الصعب فهم ما يحدث هنا.

9
00:00:36,860 --> 00:00:46,010
‫الآن ، الحل النموذجي الذي يفعله الناس هو أن يقولوا ، حسنًا ، هذه الكتلة من العقد هنا تدور حول إنتاج القذيفة.

10
00:00:46,010 --> 00:00:47,300
‫لذلك يمكنني اختيار هؤلاء.

11
00:00:47,300 --> 00:00:54,080
‫يمكنني الضغط على المفتاح C وسيقوم بوضع كتلة حول هذا يسمى كتلة التعليق.

12
00:00:54,080 --> 00:01:02,360
‫وبعد ذلك يمكنني كتابة مقذوفات تفرخ وهذا يتيح لي معرفة ما تفعله كتلة التعليمات البرمجية هذه.

13
00:01:02,360 --> 00:01:05,410
‫هذه بالتأكيد طريقة واحدة لتنظيم التعليمات البرمجية الخاصة بك.

14
00:01:05,420 --> 00:01:12,680
‫ومع ذلك ، في رأيي ، إنها ليست أفضل طريقة ولدينا أدوات أفضل للقيام بهذا المسماة الوظائف.

15
00:01:12,680 --> 00:01:14,420
‫إذن ما هي الوظائف؟

16
00:01:14,780 --> 00:01:20,510
‫تنفذ الوظائف مجموعات من المخطط وتجعل ألعابنا تقوم بالأشياء.

17
00:01:20,510 --> 00:01:25,310
‫العديد من العقد التي يوفرها Unreal Real هي بالفعل وظائف بالفعل.

18
00:01:25,310 --> 00:01:27,380
‫لذلك واجهنا هذه.

19
00:01:27,380 --> 00:01:33,170
‫عندما تذهب وتكبير العقدة المقذوفة الخاصة بنا ، فهذه وظيفة.

20
00:01:33,170 --> 00:01:39,410
‫عندما ننظر إلى إضافة الدافع ، فهذه وظيفة في الواقع لمعظم هذه العقد ، حتى أشياء مثل المضي قدمًا في

21
00:01:39,410 --> 00:01:44,090
‫المتجه النشط الذي لا يحتوي على دبوس تنفيذ وليس باللون الأزرق هي أيضًا وظيفة

22
00:01:44,090 --> 00:01:50,300
‫يمكنك تحديدها لأنها تحتوي على رمز f صغير في أعلى اليسار يشير إلى الوظيفة ، لكننا لسنا مقيدين بالوظائف

23
00:01:50,300 --> 00:01:52,370
‫التي يوفرها Unreal.

24
00:01:52,370 --> 00:01:56,150
‫يمكننا أيضًا إنشاء وظائف خاصة بنا ، ومن السهل فعلها حقًا.

25
00:01:56,150 --> 00:01:57,050
‫في مخطط.

26
00:01:57,050 --> 00:02:02,630
‫إنها تسمح لنا بالبقاء منظمين وتسمح لنا بإعادة استخدام كتل التعليمات البرمجية.

27
00:02:02,630 --> 00:02:06,500
‫هذا أفضل من التعليق لأنه يجب نسخ التعليق ولصقه.

28
00:02:06,500 --> 00:02:12,620
‫في حين أن الوظيفة تسمح لنا بمشاركة كتلة واحدة من التعليمات البرمجية بين أماكن استخدام متعددة.

29
00:02:12,620 --> 00:02:19,280
‫لذلك دعونا نلقي نظرة على كيفية تحويل شيء مثل هذا إلى كتلة من التعليمات البرمجية.

30
00:02:19,610 --> 00:02:24,620
‫حسنًا ، يمكننا حذف مجموعة التعليقات ، أولاً وقبل كل شيء ، لأنني لا أعتقد أن هذا ضروري.

31
00:02:24,620 --> 00:02:31,340
‫بدلاً من ذلك ، سأقوم بتحديد جميع العقد من الحصول على لاعب - على طول الطريق لإضافة الدافع ، انقر

32
00:02:31,340 --> 00:02:35,180
‫بزر الماوس الأيمن عليها وحدد الانهيار للعمل.

33
00:02:35,360 --> 00:02:42,920
‫وهذا يؤدي إلى إنشاء كتلة جديدة واستبدال كل تلك العقد السابقة التي كانت موجودة من قبل.

34
00:02:42,920 --> 00:02:46,520
‫الآن سأقوم بإعطاء هذه الوظيفة اسمًا يمكنك رؤيته في الجزء الأيمن.

35
00:02:46,520 --> 00:02:53,870
‫لقد أنشأت وظيفة جديدة ضمن قسم الوظيفة في جزء المخطط الخاص بي وتم تحديدها لي لإعادة التسمية

36
00:02:53,870 --> 00:02:59,480
‫تلقائيًا لأنه يجب علينا بالتأكيد إعادة تسمية هذه الوظائف وسأطلق

37
00:02:59,480 --> 00:03:02,120
‫عليها اسم قذيفة تفرخ.

38
00:03:02,120 --> 00:03:09,530
‫والتسمية الجيدة أمر حيوي للغاية في البرنامج لأن الكود هو أساسًا يتعلق بالاتصال.

39
00:03:09,530 --> 00:03:14,750
‫نحاول التواصل مع أنفسنا حتى نتمكن من فهم ما كتبناه.

40
00:03:14,750 --> 00:03:17,210
‫نحن نحاول التواصل مع أنفسنا في المستقبل.

41
00:03:17,210 --> 00:03:21,050
‫عندما نعود إلى هذا المشروع ، ننسى لماذا كتبناه بطريقة معينة.

42
00:03:21,050 --> 00:03:25,310
‫وعندما تعمل في فرق ، فأنت تحاول التواصل مع بقية أعضاء فريقك أيضًا.

43
00:03:25,340 --> 00:03:31,130
‫يقول البعض أن المقياس الجيد لجودة الكود هو ما هو هيك في الدقيقة.

44
00:03:31,130 --> 00:03:36,500
‫لذا ، إذا كنت تقرأ جزءًا من التعليمات البرمجية وأنت ذاهب ، ما هذا ، 50 مرة في الدقيقة ، فهذا

45
00:03:36,500 --> 00:03:41,060
‫رمز سيء جدًا إذا كنت تقرأه وتذهب فقط ، ما هيك ، مرة أو مرتين في الدقيقة ، إذن ربما

46
00:03:41,060 --> 00:03:44,930
‫يكون هذا رمزًا جيدًا وستحصل دائمًا على سداسي عشري إلى حد ما.

47
00:03:44,930 --> 00:03:49,220
‫لذلك نحن نحاول فقط تقليل هذا العدد من وظائفهم.

48
00:03:49,220 --> 00:03:51,650
‫بشكل حاسم ، نميل إلى تسمية الوظائف بالأفعال.

49
00:03:51,650 --> 00:03:58,070
‫هناك بعض الاستثناءات لهذه القاعدة سنتحدث عنها لاحقًا ، لكن الوظائف في الغالب هي الأشياء التي

50
00:03:58,070 --> 00:03:59,270
‫تقوم بشيء ما.

51
00:03:59,270 --> 00:04:06,230
‫لذلك نستخدم كلمات الفعل وإذا لم تكن متأكدًا من كيفية تسمية هذه الوظيفة ، فعندئذٍ إذا كنت تعمل

52
00:04:06,230 --> 00:04:11,420
‫في فريق ، يمكنك فقط التحدث إلى شخص آخر واسأله عما يعتقد أنه يجب عليك تسميته

53
00:04:11,420 --> 00:04:14,060
‫ونوع الأشياء له معنى لهم.

54
00:04:14,060 --> 00:04:19,760
‫غالبًا ما تجد أنك متأصل في مشكلة بحيث لا يمكنك التفكير في كيفية التحدث عنها.

55
00:04:19,760 --> 00:04:26,450
‫لذلك قد تسأل نفسك ، حسنًا ، أين ذهبت كل شفراتي عندما أنشأت وظيفة إطلاق

56
00:04:26,450 --> 00:04:27,170
‫قذيفة؟

57
00:04:27,320 --> 00:04:34,610
‫حسنًا ، يمكنك العودة إلى تلك التفاصيل الخاصة بكيفية تنفيذ هذه الوظيفة فعليًا إما بالنقر المزدوج عليها في الرسم البياني

58
00:04:34,610 --> 00:04:41,840
‫للحدث أو النقر عليها في علامة التبويب My Blueprints أو النقر المزدوج عليها في علامة التبويب My Blueprints.

59
00:04:41,840 --> 00:04:48,950
‫ويمكنك أن ترى أن جميع العقد الخاصة بنا لا تزال مقيمة هنا الآن ، فهي في علامة تبويب منفصلة حتى تتمكن

60
00:04:48,950 --> 00:04:56,240
‫من العودة إلى علامة تبويب الرسم البياني للحدث أو يمكنك الغوص في علامة تبويب Spawn projectile التي

61
00:04:56,240 --> 00:04:57,980
‫تعرض ذلك فقط وظيفة.

62
00:04:58,610 --> 00:05:05,480
‫ويمكنك أن ترى أن هناك عقدة جديدة هنا ، هذه العقدة الأرجوانية الصغيرة ، وهي نقطة الدخول إلى وظيفتنا.

63
00:05:05,480 --> 00:05:09,800
‫هذا يوضح أن هذا ما يجب أن نفعله عندما تبدأ الدالة.

64
00:05:09,800 --> 00:05:11,180
‫إنها مجرد نقطة دخول.

65
00:05:11,180 --> 00:05:16,880
‫وكلما تم استدعاؤها ، ستعمل هذه العقدة على تشغيل وتشغيل جميع العقد المتبقية داخل

66
00:05:16,880 --> 00:05:17,690
‫وظيفتنا.

67
00:05:17,690 --> 00:05:19,820
‫العودة إلى الرسم البياني للحدث و.

68
00:05:19,960 --> 00:05:23,190
‫التصغير ، ربما يتم تجميع عقدنا معًا قليلاً.

69
00:05:23,200 --> 00:05:26,850
‫الآن وقد جعلنا الرسم البياني للعقدة أصغر كثيرًا وأسهل في القراءة.

70
00:05:26,860 --> 00:05:33,760
‫أعتقد أن هناك مرشحين آخرين هنا لنا لسحب الوظائف واستبدال الأشياء.

71
00:05:33,940 --> 00:05:38,380
‫سيكون أحدها حيث نطبع الذخيرة.

72
00:05:38,380 --> 00:05:43,780
‫لذا في هذه الحالة ، فإن طباعة الذخيرة هو شيء نقوم به في مكانين.

73
00:05:43,780 --> 00:05:47,800
‫نفعل ذلك في بدء اللعب ونقوم به في قذيفة تفرخ.

74
00:05:48,190 --> 00:05:54,190
‫ثم في المكان الآخر ، الشيء الآخر ، الجزء الوظيفي الذي يمكننا استخلاصه في دالة

75
00:05:54,190 --> 00:06:01,200
‫سيكون حيث نقوم بتقليل الذخيرة التي يمكن وضعها في وظيفة ذخيرة متناقصة بدلاً من ذلك.

76
00:06:01,210 --> 00:06:09,640
‫لذا ، قبل أن أضع لك التحدي ، أود حذف عقدة التحويل وطباعة عقدة السلسلة

77
00:06:09,640 --> 00:06:15,280
‫بعد قذيفة النشر لأن هذا سيعقد الأمور.

78
00:06:15,280 --> 00:06:21,370
‫أود نسخ الوظيفة من أعلى بحيث يبدو كلاهما متماثلًا تمامًا.

79
00:06:21,370 --> 00:06:29,200
‫لذلك إذا قمنا بنسخ العقد الثلاثة من Begin Play ولصقها في الأسفل وقمنا بتوصيل دبابيس التنفيذ ، فيمكنك

80
00:06:29,200 --> 00:06:35,050
‫أن ترى أننا حصلنا على نفس مجموعة العقد هنا بالضبط ، نفس الوظيفة بين الاثنين

81
00:06:35,050 --> 00:06:39,970
‫، ولا يوجد أي ارتباك عندما نأتي لاستخراج هذا في وظيفة.

82
00:06:39,970 --> 00:06:43,240
‫لذا أود أن أتحداك للقيام ببعض الوظائف الإضافية.

83
00:06:43,240 --> 00:06:47,140
‫أول ما أوصي به هو انخفاض الذخيرة.

84
00:06:47,140 --> 00:06:51,850
‫إذن أخذ العقد الثلاثة المتضمنة في تقليل الذخيرة ، واستخراجها في وظيفة ومنحها

85
00:06:51,850 --> 00:06:52,720
‫اسمًا.

86
00:06:52,960 --> 00:06:56,020
‫والثاني هو ذخيرة الطباعة.

87
00:06:56,020 --> 00:07:03,310
‫لذلك ، سوف تستخرج وظيفة الحصول على الذخيرة وتحويلها وطباعتها

88
00:07:03,310 --> 00:07:05,740
‫في وظيفة واحدة.

89
00:07:05,740 --> 00:07:11,500
‫ولأن لدينا موقعين نطبع فيهما الذخيرة ، فقد ترغب في حذف أحدهما وإحضار الوظيفة

90
00:07:11,500 --> 00:07:17,020
‫بدلاً من ذلك ، وهو ما يمكنك القيام به عن طريق السحب من جزء المخطط الخاص بي.

91
00:07:17,260 --> 00:07:22,750
‫ثم أخيرًا لدينا رسالتان ترحيبيتان ، ناتجة عن عقد رسائل الترحيب.

92
00:07:22,750 --> 00:07:24,820
‫يمكنك استخراجها في صورة مطبوعة.

93
00:07:24,820 --> 00:07:27,070
‫رسائل الترحيب تعمل كذلك.

94
00:07:27,100 --> 00:07:29,170
‫أوقف الفيديو واذهب.

95
00:07:32,230 --> 00:07:32,740
‫تمام.

96
00:07:32,740 --> 00:07:33,570
‫مرحبًا بعودتك.

97
00:07:33,580 --> 00:07:37,450
‫لذلك سنستخرج ذخيرة التخفيض أولاً.

98
00:07:37,450 --> 00:07:39,640
‫إذن هناك ثلاث عقد تشارك في ذلك.

99
00:07:39,640 --> 00:07:47,260
‫سننقر بزر الماوس الأيمن على طي الوظيفة ، ثم سنسميها تقليل الذخيرة وهذا واضح إلى حد

100
00:07:47,260 --> 00:07:47,740
‫ما.

101
00:07:47,740 --> 00:07:51,940
‫حتى تفرخ قذيفة ، وتقليل الذخيرة ثم نقوم بطباعة الذخيرة.

102
00:07:51,940 --> 00:07:58,210
‫لنأخذ العقد الثلاثة ، سلسلة التحويل والطباعة ، وسننقر بزر الماوس الأيمن على

103
00:07:58,210 --> 00:08:02,020
‫الطي لتعمل ونطلق على هذه الذخيرة المطبوعة.

104
00:08:02,470 --> 00:08:08,590
‫الآن كما قلت ، لقد تكررت هذه الوظيفة في مكانين ، لذلك سنحذف المكان الذي تقوم فيه

105
00:08:08,590 --> 00:08:16,180
‫بذلك في بدء التشغيل وسحب فقط ذخيرة الطباعة من قائمة الوظائف الخاصة بنا ونقوم بتوصيل دبابيس التنفيذ

106
00:08:16,180 --> 00:08:19,840
‫بحيث يتم تشغيلها بعد سلسلة الطباعة.

107
00:08:20,200 --> 00:08:25,630
‫وهو ما يقودني إلى الوظيفة الأخيرة التي أرغب في إنشائها ، والتي قلنا أننا سنطلق عليها رسائل الترحيب المطبوعة.

108
00:08:25,630 --> 00:08:32,050
‫لذلك سأقوم بتحديد السلاسل المراد طباعتها بعد أن تكون في طور التشغيل لتعمل وأسميها

109
00:08:32,050 --> 00:08:34,390
‫طباعة رسائل الترحيب.

110
00:08:34,390 --> 00:08:42,040
‫وهذه العقدة ، يمكننا الآن فقط إعادة ترتيب كل عقدنا لتسهيل قراءة كل هذا في شاشة واحدة

111
00:08:42,040 --> 00:08:43,200
‫ممتلئة.

112
00:08:43,210 --> 00:08:49,960
‫يمكنك أن ترى أنه من الأسهل بكثير فهم وظائف لعبتنا الآن لأنها تناسبها جميعًا على

113
00:08:49,960 --> 00:08:56,380
‫شاشة واحدة ويتم تقديمها بشكل جيد إلى مستوى مماثل من التجريد والفهم.

114
00:08:56,380 --> 00:09:02,830
‫وهذا ما نسميه كود التوثيق الذاتي ، لأنه رمز لا يحتاج إلى تعليقات أو

115
00:09:02,830 --> 00:09:04,900
‫توثيق لشرح ما يفعله.

116
00:09:04,900 --> 00:09:07,150
‫انها فقط تقرأ مثل اللغة الإنجليزية.

117
00:09:07,270 --> 00:09:08,110
‫أشياء عظيمة.

118
00:09:08,110 --> 00:09:10,120
‫سأراك في المحاضرة القادمة.

