﻿1
00:00:04,270 --> 00:00:05,200
‫أهلا ومرحبا.

2
00:00:05,200 --> 00:00:10,060
‫في هذه المحاضرة ، سنعرض شاشة فضفاضة وسنقوم بذلك بالكامل

3
00:00:10,060 --> 00:00:13,870
‫من داخل C ++ لإنتاج هذه الأداة.

4
00:00:13,870 --> 00:00:15,490
‫دعنا نتعمق ونرى كيف يتم ذلك.

5
00:00:16,150 --> 00:00:21,640
‫لذلك نود عرض بعض واجهة المستخدم عندما يموت لاعبنا لإخبارهم بما يحدث أنهم فقدوه وأن المستوى

6
00:00:21,640 --> 00:00:23,260
‫على وشك إعادة التعيين.

7
00:00:23,260 --> 00:00:25,240
‫لذلك لا يشكل ذلك مفاجأة لهم.

8
00:00:25,240 --> 00:00:31,990
‫لذلك سنحتاج إلى إنشاء بعض واجهة المستخدم ، أداة واجهة المستخدم ، UMG ، عنصر واجهة مستخدم للرسومات المتحركة غير الواقعية.

9
00:00:32,350 --> 00:00:35,830
‫لذلك دعونا نفعل ذلك أولاً ، عن طريق إنشاء مجلد لتخزين واجهة المستخدم.

10
00:00:35,830 --> 00:00:41,470
‫وأنا أعلم بالفعل أننا سنحصل على عنصرين من واجهة المستخدم ، لذلك أعتقد أنه سيكون لدي مجلد واجهة مستخدم

11
00:00:41,470 --> 00:00:47,200
‫هنا ، ثم دعنا ندخل هنا وننقر بزر الماوس الأيمن ثم ننتقل ، كان يجب عليك فعل ذلك من قبل ، ولكن دعنا " سأرشدك من

12
00:00:47,200 --> 00:00:47,800
‫خلال.

13
00:00:48,070 --> 00:00:52,600
‫سننتقل إلى قسم واجهة المستخدم ، ثم حدد مخطط عنصر واجهة المستخدم

14
00:00:52,600 --> 00:00:57,130
‫والبادئة التي سنستخدمها هي WP السفلية ثم ستفقد الشاشة.

15
00:00:57,430 --> 00:01:02,770
‫يمكنك الآن عمل بعض الفئات الأساسية لهذا النوع من الأشياء في C ++ ، لكننا لن نغطي هذا في

16
00:01:02,770 --> 00:01:03,520
‫هذا القسم.

17
00:01:03,520 --> 00:01:07,480
‫ليس من الضروري بشكل عام القيام بذلك ، ومن الأسهل القيام بهذه الأشياء في Blueprint.

18
00:01:07,480 --> 00:01:13,000
‫لا توجد فائدة كبيرة للقيام بذلك في C ++ ما لم تكن واجهة المستخدم الخاصة بك ستصبح معقدة للغاية

19
00:01:13,000 --> 00:01:15,850
‫وأردت وضع بعض منطق واجهة المستخدم هذا في C ++.

20
00:01:15,850 --> 00:01:20,560
‫في هذه الحالة ، ليس هذا هو الحال ، لذلك يمكننا المضي قدمًا واستخدام المخططات.

21
00:01:20,560 --> 00:01:22,510
‫بعد كل شيء ، واجهة المستخدم هي شيء مرئي.

22
00:01:22,510 --> 00:01:29,500
‫من المنطقي استخدام أداة مرئية لتجميعها الآن لأنك تعرف بالفعل كيفية إنشاء عناصر واجهة المستخدم.

23
00:01:29,500 --> 00:01:32,860
‫ثم سأقدم هذا كتحدي لك لإعداد شاشة خاسرة.

24
00:01:32,860 --> 00:01:37,180
‫نريد إضافة نص يوضح أن اللاعب قد خسر وأننا على وشك إعادة التشغيل.

25
00:01:37,240 --> 00:01:42,040
‫إذا كنت تريد وضع هذا النص بشكل مركزي على الأرجح ، وجعله مرئيًا ، وتأكد من أنه مرئي في اللعبة.

26
00:01:42,040 --> 00:01:45,610
‫ومع ذلك ، كما قلت ، اشرح أنه سيكون هناك استئناف قادم.

27
00:01:45,730 --> 00:01:50,500
‫وبعد ذلك بعد أن حاولت هذا التحدي ، سننظر في كيفية إنتاج هذا من C ++.

28
00:01:50,500 --> 00:01:53,020
‫لقد رأيت ربما كيفية القيام بذلك في Blueprint من قبل.

29
00:01:53,020 --> 00:01:55,690
‫سنرى كيف يمكننا القيام بذلك من داخل C ++.

30
00:01:55,690 --> 00:01:57,070
‫لذا أوقف الفيديو مؤقتًا واذهب.

31
00:01:57,160 --> 00:01:58,420
‫حسنًا ، أرحب بعودتك.

32
00:01:58,600 --> 00:02:03,340
‫لذلك سأذهب وأنشئ ، أولاً وقبل كل شيء ، القليل من النص.

33
00:02:03,340 --> 00:02:09,400
‫لذلك أريد البحث في اللوحة الموجودة على اليسار ، وسأبحث عن عنصر النص وإحضاره.

34
00:02:10,090 --> 00:02:17,270
‫سأقوم بتغييره إلى أنك تفقد حوارًا واضحًا جدًا وغير مبدع في الكتابة هنا وسنقوم بتغيير اللون والتعتيم

35
00:02:17,290 --> 00:02:22,900
‫و / أو المظهر إلى اللون الأحمر لجعل الأمر واضحًا تمامًا أنهم فقدوا.

36
00:02:22,900 --> 00:02:28,090
‫وفركها أكثر قليلاً وسأقوم بتوسيع الخط وتغيير الحجم ليكون أكبر.

37
00:02:28,090 --> 00:02:35,320
‫ثم سأقوم بتوسيع المربع حول النص وسأقوم بتوسيط النص.

38
00:02:35,320 --> 00:02:38,080
‫بالانتقال إلى التبرير ، سأقوم بتوسيط سطر في النص.

39
00:02:38,080 --> 00:02:44,890
‫وإذا توسعت ، فلنرى ما إذا كان هناك مكان آخر يمكنني فيه محاذاة الوسط داخل الملاحظة غير موجودة.

40
00:02:44,890 --> 00:02:52,720
‫لذلك سأذهب وأجعل حجم الصندوق مناسبًا تقريبًا ثم سأنتقل إلى المحاذاة والمراسي

41
00:02:52,720 --> 00:02:55,150
‫وأشياء من هذا القبيل.

42
00:02:55,450 --> 00:03:02,080
‫وسأقوم بتحديد القائمة المنسدلة للمثبتات وتحديد الإعداد المسبق للتثبيت في المنتصف ، لأن هذا ما

43
00:03:02,080 --> 00:03:03,370
‫أريد القيام به.

44
00:03:03,790 --> 00:03:12,430
‫أرغب في ضبط محاذاة على 0. 5 و 0. 5 ، وهو ما يعني في الأساس أننا نحاذي مركز الكائن

45
00:03:12,430 --> 00:03:14,530
‫بدلاً من الزاوية اليسرى العليا.

46
00:03:14,770 --> 00:03:16,690
‫سأقوم بعمل المرساة مرة أخرى.

47
00:03:16,690 --> 00:03:16,930
‫تمام.

48
00:03:16,930 --> 00:03:19,060
‫لم يكن ذلك مفيدًا جدًا.

49
00:03:19,390 --> 00:03:24,520
‫ثم الموضع X لماذا أعتقد أنه إذا قمت للتو بتعيين الموضع بجوار الصفر والصفر لأنني قمت بإعداد نقاط

50
00:03:24,520 --> 00:03:29,260
‫ارتكازي بهذا الشكل ، فإن مركز الخسارة الخاص بي سيكون في مكان ما في المنتصف وسأقوم فقط

51
00:03:29,260 --> 00:03:31,300
‫بتحريكه من أي وقت مضى قليلا جدا.

52
00:03:31,300 --> 00:03:38,200
‫احتفظ بموقعي X عند الصفر ، والموضع Y -50 ، لأنني أريد إضافة بعض النصوص الثانوية التي تقول في الواقع ، قد يكون

53
00:03:38,200 --> 00:03:43,090
‫من الأسهل فقط تكرار النص الآخر هنا لأنه يحتوي على كل الإعدادات التي أحتاجها

54
00:03:43,090 --> 00:03:43,930
‫بالفعل.

55
00:03:43,930 --> 00:03:46,060
‫أريد فقط أن أجعلها أصغر قليلاً.

56
00:03:46,060 --> 00:03:54,160
‫ضع صفرًا مرة أخرى وسأقول أن المستوى سيعيد التشغيل في غضون 5 ثوانٍ وسأجعل حجم الخط أصغر

57
00:03:54,160 --> 00:03:55,270
‫كثيرًا.

58
00:03:55,270 --> 00:04:00,460
‫لذا فهو أقل في وجهك ، شيء من هذا القبيل ، ثم حركه لأسفل قليلاً ، قليلًا

59
00:04:00,460 --> 00:04:05,950
‫واستمر في إعادة تعيين هذا الموضع X إلى الصفر و 100٪ سعيد بالتموضع.

60
00:04:05,950 --> 00:04:08,560
‫سأقوم بتحريكه قليلاً أكثر.

61
00:04:08,560 --> 00:04:14,050
‫إذا ضغطت على مفتاح shift لأسفل ، فيمكنني أن أقفله على المحور الذي أتحرك معه بحيث يكون مركزيًا إلى

62
00:04:14,050 --> 00:04:14,560
‫حد ما.

63
00:04:14,590 --> 00:04:15,640
‫حسنًا ، أنا سعيد بذلك.

64
00:04:15,640 --> 00:04:18,940
‫الآن نحن بحاجة إلى المضي قدمًا ومحاولة إنتاج الشيء.

65
00:04:18,970 --> 00:04:19,870
‫كيف سنقوم بفعل ذلك؟

66
00:04:19,870 --> 00:04:25,210
‫حسنًا ، أولاً وقبل كل شيء ، سنحتاج إلى معرفة فئة الأدوات التي من المفترض أن ننتجها ، ونحتاج

67
00:04:25,210 --> 00:04:27,520
‫إلى معرفة أين سنقوم بذلك من الآن.

68
00:04:27,520 --> 00:04:31,870
‫كما قلت سابقًا ، أعتقد أن مكانًا جيدًا للقيام بذلك هو من وحدة تحكم اللاعب نفسها.

69
00:04:32,200 --> 00:04:38,030
‫وسنحتاج أن نعرف في وحدة تحكم اللاعب أي فئة ، ما فئة الأدوات التي نحاول نشرها؟

70
00:04:38,030 --> 00:04:42,670
‫الآن ، أعلم أنه فصل دراسي ، لكننا لا نزال بحاجة إليه ليكون فصلًا نحاول نشره.

71
00:04:43,000 --> 00:04:48,880
‫لذا فإن الطريقة التي سنقوم بها هي إنشاء خاصية جديدة هنا سيتم تعديلها في أي

72
00:04:48,880 --> 00:04:55,990
‫مكان وسنريد أن تكون هذه فئة فرعية لأن هذه دائمًا طريقة جيدة للتأكد من حصولنا على عنصر جديد

73
00:04:55,990 --> 00:04:57,250
‫صف دراسي.

74
00:04:57,250 --> 00:05:04,270
‫في الأساس ، يمكنك استخدام النوع الذي تدرسه إذا أردت ذلك ، لكن هذا لا يقيد نوع الفصل الذي يمكننا

75
00:05:04,270 --> 00:05:05,350
‫استخدامه.

76
00:05:05,350 --> 00:05:09,790
‫وهنا نريد قصره على كونك تستخدم عناصر واجهة مستخدم فقط.

77
00:05:09,790 --> 00:05:17,390
‫إذا انتقلت إلى مخططك ، يمكنك معرفة ما إذا كنا نذهب إلى مكان ما هنا ، يمكنك أن تجد هناك تذهب.

78
00:05:17,410 --> 00:05:22,930
‫فئة الوالدين هي استخدام عنصر واجهة مستخدم والذي نعرف أنه عندما تضع البادئة عليه يصبح عنصر واجهة مستخدم.

79
00:05:23,050 --> 00:05:26,680
‫إذن فهذه فئة فرعية من.

80
00:05:27,490 --> 00:05:34,360
‫وبعد ذلك نستخدم أقواس الزاوية الخاصة بنا والتي ستكون عبارة عن أداة تستخدم فيها عنصر واجهة مستخدم وسأقوم فعليًا

81
00:05:34,360 --> 00:05:40,150
‫بالتقدم للإعلان عن أن أحدها هنا بدلاً من القيام بأي شيء يتضمن ذلك الفصل الذي تستخدم فيه عنصر

82
00:05:40,150 --> 00:05:46,630
‫واجهة مستخدم ومن ثم سنسمي هذا العنصر الخاسر فئة الشاشة فقط لإبقائها واضحة حقًا ما يحدث هناك.

83
00:05:47,020 --> 00:05:54,400
‫سأقوم الآن بالمضي قدمًا والتجميع في هذه المرحلة أثناء قيامنا بالأشياء التالية لأن التجميع عند تغيير ملف

84
00:05:54,400 --> 00:05:56,710
‫الرأس يستغرق وقتًا أطول قليلاً.

85
00:05:56,710 --> 00:06:02,860
‫الآن في الواقع ستفشل عملية التجميع في هذه المرحلة لأننا لم نقم بتضمين وحدة UMG.

86
00:06:02,860 --> 00:06:03,820
‫نحن لا نعرف كيف نفعل ذلك.

87
00:06:03,820 --> 00:06:09,010
‫لا تقلق بشأن التجميع في هذه المرحلة وفي حوالي 9 دقائق من الفيديو ، سنصلح هذا

88
00:06:09,010 --> 00:06:09,760
‫الخطأ.

89
00:06:10,060 --> 00:06:14,560
‫الآن في C ++ ، ما نريد القيام به هو في الواقع إنتاج هذه الأداة.

90
00:06:14,560 --> 00:06:17,290
‫لذلك سنرغب في القيام بذلك ربما حتى قبل الوقت.

91
00:06:17,290 --> 00:06:20,320
‫لا يهم حقًا لأن المؤقت لا ينتظر.

92
00:06:20,320 --> 00:06:24,820
‫إنه يحدد الوقت فقط ثم ينتقل مباشرة إلى السطر التالي من الكود ، لذلك لن ننتظر 5 ثوانٍ إذا فعلنا

93
00:06:24,820 --> 00:06:29,110
‫ذلك على التوالي ، إذا قمنا بإنشاء واجهة المستخدم مباشرة بعد ذلك ، فلا يهم حقًا الترتيب الذي

94
00:06:29,110 --> 00:06:29,860
‫نقوم به في.

95
00:06:30,220 --> 00:06:36,520
‫لذلك ما نريد القيام به هو استخدام وظيفة تسمى إنشاء عنصر واجهة مستخدم غير متوفر حاليًا.

96
00:06:36,520 --> 00:06:38,980
‫لذلك نحن بحاجة إلى تجزئة تضمين شيء ما أولاً.

97
00:06:38,980 --> 00:06:45,850
‫وما سنقوم بتضمينه هو مخطط مستخدم مائل للأمام ، وهذا هو الفصل الذي نحتاجه للوصول

98
00:06:45,850 --> 00:06:50,260
‫إلى وظيفة إنشاء عنصر واجهة المستخدم هذه.

99
00:06:50,740 --> 00:06:53,620
‫وسنقول بشكل أساسي إنشاء عنصر واجهة مستخدم.

100
00:06:53,620 --> 00:06:58,270
‫يجب أن يكون ، حسنًا ، في الواقع ، دعونا نرى ما نحتاجه لتقديمه.

101
00:06:58,270 --> 00:07:00,910
‫سأذهب إلى F 12 لتنفيذه.

102
00:07:00,910 --> 00:07:07,330
‫يمكنك أن ترى أنه من الصعب بعض الشيء رؤيته ، لكن لدينا معلمة قالب في الأعلى هنا والتي هي أساسًا تستخدم عنصر واجهة

103
00:07:07,330 --> 00:07:11,080
‫مستخدم افتراضيًا ، لذلك ربما لا يتعين علينا توفير ذلك.

104
00:07:11,590 --> 00:07:19,390
‫ثم هناك الكائن المالك والفئة التي نحتاج إلى إنشائها ثم اسم عنصر واجهة مستخدم لا نحتاج بالضرورة

105
00:07:19,390 --> 00:07:23,830
‫إلى توفيره ثم يعود كمؤشر إلى عنصر واجهة المستخدم.

106
00:07:24,040 --> 00:07:29,200
‫إذن ما سأفعله هو هنا ، سنمنحه كائنًا للمالك.

107
00:07:29,200 --> 00:07:31,560
‫الآن فقط أشياء معينة يمكن أن تمتلك الأداة.

108
00:07:31,580 --> 00:07:36,310
‫أحد هذه الأشياء هو في الواقع جهاز تحكم اللاعب ، لذلك يمكننا فقط تمرير هذا.

109
00:07:36,310 --> 00:07:40,750
‫ثم الشيء التالي هو أننا نريد أن نمرر في فئة RT الفرعية الخاصة بك باستخدام عنصر واجهة مستخدم.

110
00:07:40,750 --> 00:07:46,540
‫حسنًا ، لحسن الحظ ، قمنا بالفعل بتكوين ذلك في ملف الرأس حتى نتمكن من المضي قدمًا وتمريره

111
00:07:46,540 --> 00:07:52,150
‫وسأوقف المسافة البادئة عن محاولة إصلاح نفسه بينما لم أضع فاصلة منقوطة في نهاية السطر

112
00:07:52,150 --> 00:07:55,420
‫ثم دعنا نذهب ونلقي نظرة على الأمور الأخرى.

113
00:07:55,420 --> 00:07:56,050
‫حسنًا ، هذا كل شيء.

114
00:07:56,050 --> 00:07:58,540
‫يقوم فقط بإرجاع القطعة في هذه المرحلة.

115
00:07:58,540 --> 00:08:06,910
‫لذا ما يمكننا فعله هو الحصول على مؤشر لك ، واستخدام نجمة القطعة وستكون هذه الشاشة المفقودة.

116
00:08:06,910 --> 00:08:09,310
‫لذلك كان لدينا فئة الشاشة المفقودة.

117
00:08:09,310 --> 00:08:13,000
‫بعد إنشاء الأداة ، تصبح شاشة فعلية فضفاضة.

118
00:08:13,000 --> 00:08:16,060
‫الشيء التالي الذي يتعين علينا القيام به هو جعل واجهة المستخدم هذه مرئية.

119
00:08:16,060 --> 00:08:20,020
‫نقوم بذلك عن طريق إضافته إلى منفذ العرض بلغة غير واقعية.

120
00:08:20,020 --> 00:08:25,510
‫لكن أولاً ، لأننا نضيف إلى منفذ العرض عن طريق استدعاء دالة على الشاشة الزرقاء ، نحتاج إلى التأكد

121
00:08:25,510 --> 00:08:27,100
‫من أنها ليست مؤشر فارغ.

122
00:08:27,100 --> 00:08:32,410
‫لذلك إذا كان فقدان الشاشة لا يساوي مؤشر فارغ ، فلماذا يمكن أن يكون مؤشر فارغ؟

123
00:08:32,410 --> 00:08:36,760
‫بالمناسبة ، هناك تحدٍ ضئيل بالنسبة لك لمعرفة ما إذا كان بإمكانك معرفة سبب انتهاء المطاف بمؤشر فارغ

124
00:08:36,760 --> 00:08:37,210
‫هنا.

125
00:08:37,600 --> 00:08:41,200
‫حسنًا ، أحد الأسباب ربما هو أننا نسينا تعيين فئة الشاشة المفقودة.

126
00:08:41,200 --> 00:08:46,180
‫وإذا كانت هذه هي الحالة ولم يكن لدينا مجموعة فئة شاشة زرقاء صالحة ، فإن إنشاء عنصر واجهة مستخدم سيعيد

127
00:08:46,180 --> 00:08:47,860
‫مؤشرًا فارغًا بالنسبة لنا.

128
00:08:47,860 --> 00:08:54,340
‫ولا نريد أن يحدث ذلك ولا نريد بالتأكيد استدعاء دالة على مؤشر فارغ.

129
00:08:54,340 --> 00:08:56,500
‫لذلك سنفقد سهم الشاشة.

130
00:08:56,740 --> 00:09:01,270
‫ثم ما نريده هنا هو وظيفة تسمى إضافة إلى منفذ العرض.

131
00:09:02,060 --> 00:09:07,820
‫وهو ما سيفعل ذلك تمامًا ، اذهب وأضفه إلى الشاشة حتى نتمكن من رؤية تلك الشاشة السائبة.

132
00:09:08,090 --> 00:09:14,780
‫الآن ، سأقوم بتجميع ذلك أيضًا ، وأذهب إلى بكرة واحدة وافتح مخططنا

133
00:09:14,780 --> 00:09:17,330
‫لوحدة تحكم اللاعب.

134
00:09:17,330 --> 00:09:19,100
‫لذلك وحدة تحكم لاعب مطلق النار هنا.

135
00:09:19,550 --> 00:09:25,520
‫ويجب أن نكون قادرين على رؤية متغير في مكان ما هنا لم يظهر بعد.

136
00:09:25,640 --> 00:09:27,110
‫ربما كان لدي بعض أخطاء البناء.

137
00:09:27,110 --> 00:09:28,850
‫دعنا نذهب ونلقي نظرة على سجل الرسائل.

138
00:09:29,180 --> 00:09:36,140
‫نعم ، يمكننا أن نرى بعض أخطاء البناء هنا ، وبالتحديد هذه الأخطاء الغريبة عن الرموز الخارجية المفقودة.

139
00:09:36,140 --> 00:09:41,780
‫إذا كان لدينا نظرة صغيرة تقول أشياء عنك ، فاستخدم عنصر واجهة مستخدم غير متوفر الآن إذا

140
00:09:41,780 --> 00:09:49,520
‫أعادت رأيك إلى بضع محاضرات سابقًا ، فنحن نعلم أن هذه الأنواع من الأخطاء تميل إلى الظهور عندما نفقد اعتمادًا على الوحدة

141
00:09:49,520 --> 00:09:50,840
‫النمطية.

142
00:09:50,840 --> 00:09:57,770
‫لذلك إذا ذهبنا وفتحنا نقطة بناء نقطة إطلاق النار البسيطة ، وسأغلق المحطة الطرفية لمزيد من المساحة

143
00:09:57,770 --> 00:10:04,370
‫الإضافية ، عندها يمكنك أن ترى ما يتعين علينا القيام به هو إضافة تبعية عامة جديدة هنا.

144
00:10:04,580 --> 00:10:12,140
‫حتى نهاية هذا ، سنضيف تبعية عامة لـ UMG ، لذلك فاصلة جديدة.

145
00:10:12,140 --> 00:10:20,600
‫وبعد ذلك في علامات الاقتباس ، سنضع UMG وهذا يسمح لنا بشكل أساسي بالاستفادة من التضمين الذي كان لدينا هنا

146
00:10:20,600 --> 00:10:24,380
‫، عنصر واجهة مستخدم المخطط المائل للأمام.

147
00:10:24,680 --> 00:10:28,700
‫كل هذه الأشياء موجودة في وحدة منفصلة عن العناصر القياسية المضمنة.

148
00:10:28,700 --> 00:10:32,690
‫لذلك نحن بحاجة للذهاب وإخبار Unreal بأننا نريد استخدام هذه الوحدة في C ++ الخاص بنا.

149
00:10:32,690 --> 00:10:34,640
‫دعنا نمضي قدمًا ونبني ونرى ما إذا كان يعمل.

150
00:10:34,640 --> 00:10:36,410
‫الآن يبدو ذلك ناجحًا.

151
00:10:36,410 --> 00:10:42,500
‫إذا انتقلنا إلى المحرر ورجعنا إلى وحدة التحكم في لعب مطلق النار ، فهناك سبب لا أعتقد أنه قد تم إعادة تحميله

152
00:10:42,500 --> 00:10:46,340
‫بشكل صحيح ، لذلك اضطررت إلى الضغط على compile هنا في المحرر.

153
00:10:46,340 --> 00:10:48,430
‫نعود الآن إلى وحدة تحكم لاعب مطلق النار.

154
00:10:48,430 --> 00:10:50,630
‫في النهاية يمكنك أن ترى أن تفقد فئة الشاشة.

155
00:10:50,850 --> 00:10:57,830
‫يمكننا النقر فوق القائمة المنسدلة هناك والانتقال وتحديد AWP ، ووضع علامة سفلية على الشاشة المفقودة هناك ، والتجميع

156
00:10:57,830 --> 00:11:00,140
‫، والحفظ ، ودعنا نذهب ونقتل أنفسنا.

157
00:11:00,140 --> 00:11:01,900
‫سنطلق النار علينا عدة مرات.

158
00:11:01,910 --> 00:11:03,380
‫فرقعة ، فرقعة.

159
00:11:03,380 --> 00:11:04,250
‫وها أنت ذا.

160
00:11:04,250 --> 00:11:09,320
‫ظهرت شاشة Lou الخاصة بنا لتخبرنا بما يحدث على وشك إعادة تشغيل هذا المستوى في غضون 5 ثوانٍ.

161
00:11:09,320 --> 00:11:10,220
‫وفعلت.

162
00:11:10,220 --> 00:11:11,270
‫نعم هو كذلك.

163
00:11:11,270 --> 00:11:20,030
‫الآن أنت لا تعرف فقط كيف يمكنك إنشاء رسومات UMG ، ولكن أيضًا كيف يمكنك إنتاجها من C ++ بدلاً

164
00:11:20,030 --> 00:11:22,070
‫من Blueprint.

165
00:11:22,070 --> 00:11:26,960
‫في المحاضرة التالية ، سيكون لدينا نظرة أقل تشاؤمًا بشأن الأشياء ونحاول معرفة ما

166
00:11:26,960 --> 00:11:30,680
‫إذا كان بإمكاننا أيضًا إنشاء بعض شروط الفوز لهذه اللعبة.

167
00:11:30,680 --> 00:11:31,550
‫سأراك هناك.

