﻿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:23,260
‫ดังนั้นเราจึงต้องการแสดง UI บางส่วนเมื่อผู้เล่นของเราตายเพื่อบอกว่าเกิดอะไรขึ้นที่พวกเขาสูญเสียไปและระดับกำลังจะรีเซ็ต

6
00:00:23,260 --> 00:00:25,240
‫จึงไม่แปลกใจสำหรับพวกเขา

7
00:00:25,240 --> 00:00:31,990
‫ดังนั้น เราจะต้องสร้าง UI, วิดเจ็ต UI, UMG, วิดเจ็ตกราฟิกเคลื่อนไหวที่ไม่สมจริง

8
00:00:32,350 --> 00:00:35,830
‫เรามาทำกันก่อนโดยสร้างโฟลเดอร์เพื่อเก็บ UI

9
00:00:35,830 --> 00:00:41,470
‫และฉันรู้แล้วว่าเราจะมี UI สองรายการ ดังนั้นฉันคิดว่าฉันจะมีโฟลเดอร์ UI ที่นี่

10
00:00:41,470 --> 00:00:47,800
‫จากนั้นเข้าไปที่นี่และคลิกขวาแล้วไป คุณควรทำสิ่งนี้มาก่อน แต่เดี๋ยวก่อน จะพาคุณผ่าน

11
00:00:48,070 --> 00:00:52,600
‫เราจะไปที่ส่วนอินเทอร์เฟซผู้ใช้ จากนั้นเลือกพิมพ์เขียววิดเจ็ตและคำนำหน้าที่เราจะใช้คือขีดล่าง

12
00:00:52,600 --> 00:00:57,130
‫WP จากนั้นหน้าจอจะเสีย

13
00:00:57,430 --> 00:01:03,520
‫ตอนนี้คุณสามารถทำคลาสพื้นฐานสำหรับเนื้อหาประเภทนี้ใน C++ ได้ แต่เราจะไม่ครอบคลุมในส่วนนี้

14
00:01:03,520 --> 00:01:07,480
‫โดยทั่วไปไม่จำเป็นต้องทำเช่นนั้น และการทำสิ่งนี้ใน Blueprint ทำได้ง่ายกว่ามาก

15
00:01:07,480 --> 00:01:13,000
‫การทำใน C++ นั้นไม่มีประโยชน์อะไรมาก เว้นแต่คุณจะเป็น UI ที่มีความซับซ้อนขั้นสูงสุด

16
00:01:13,000 --> 00:01:15,850
‫และคุณต้องการนำตรรกะของ UI นั้นไปไว้ใน C++

17
00:01:15,850 --> 00:01:20,560
‫ในกรณีนั้น มันไม่ใช่อย่างนั้น ดังนั้นเราจึงสามารถใช้พิมพ์เขียวต่อไปได้

18
00:01:20,560 --> 00:01:22,510
‫ท้ายที่สุด UI เป็นสิ่งที่มองเห็นได้

19
00:01:22,510 --> 00:01:29,500
‫การใช้เครื่องมือภาพเพื่อประกอบเข้าด้วยกันเป็นเรื่องที่สมเหตุสมผล เพราะคุณรู้อยู่แล้วว่าจะสร้างวิดเจ็ตได้อย่างไร

20
00:01:29,500 --> 00:01:32,860
‫ฉันจะให้สิ่งนี้เป็นความท้าทายให้คุณตั้งค่าหน้าจอเสีย

21
00:01:32,860 --> 00:01:37,180
‫เราต้องการเพิ่มข้อความที่อธิบายว่าผู้เล่นแพ้และเรากำลังจะเริ่มต้นใหม่

22
00:01:37,240 --> 00:01:42,040
‫ต้องการวางตำแหน่งข้อความนั้นไว้ตรงกลาง ทำให้มองเห็นได้ ตรวจสอบให้แน่ใจว่ามองเห็นได้ในเกม

23
00:01:42,040 --> 00:01:45,610
‫และอย่างที่ฉันพูดไป อธิบายว่าจะมีการเริ่มต้นใหม่

24
00:01:45,730 --> 00:01:50,500
‫และหลังจากที่คุณได้ลองทำความท้าทายนี้แล้ว เราจะมาดูกันว่าเราจะสามารถเรียกสิ่งนี้จาก C++ ได้อย่างไร

25
00:01:50,500 --> 00:01:53,020
‫คุณเคยเห็นวิธีการทำสิ่งนี้ใน Blueprint มาก่อนแล้ว

26
00:01:53,020 --> 00:01:55,690
‫เราจะมาดูกันว่าเราจะทำได้อย่างไรจากภายใน C++

27
00:01:55,690 --> 00:01:57,070
‫หยุดวิดีโอชั่วคราวแล้วไปกันเลย

28
00:01:57,160 --> 00:01:58,420
‫โอเค ยินดีต้อนรับกลับ

29
00:01:58,600 --> 00:02:03,340
‫ฉันจะไปสร้างข้อความก่อน

30
00:02:03,340 --> 00:02:09,400
‫ดังนั้นฉันต้องการมองหาในจานสีทางด้านซ้าย มองหารายการข้อความแล้วนำเข้ามา

31
00:02:10,090 --> 00:02:22,900
‫ฉันจะเปลี่ยนให้คุณสูญเสียการเขียนบทสนทนาที่ตรงไปตรงมาและไร้จินตนาการที่นี่ และเราจะเปลี่ยนสีและความทึบและหรือลักษณะเป็นสีแดงเพื่อให้ชัดเจนว่าพวกเขาหายไป

32
00:02:22,900 --> 00:02:28,090
‫และแค่ถูเข้าไปอีกหน่อย ฉันจะขยายแบบอักษรและเปลี่ยนขนาดให้ใหญ่ขึ้น

33
00:02:28,090 --> 00:02:35,320
‫แล้วผมจะขยายกรอบรอบๆ ข้อความ และจัดกึ่งกลางข้อความ

34
00:02:35,320 --> 00:02:38,080
‫ลงไปที่การให้เหตุผล ผมจะจัดกึ่งกลางบรรทัดที่ข้อความ

35
00:02:38,080 --> 00:02:44,890
‫และถ้าฉันขยายออกไป ลองดูว่ามีที่อื่นที่ฉันจัดกึ่งกลางภายในโน้ตได้หรือไม่

36
00:02:44,890 --> 00:02:52,720
‫ผมก็เลยไปทำขนาดกล่องให้เหมาะสมพอประมาณ จากนั้นผมก็จะขึ้นไปถึงการจัดตำแหน่ง

37
00:02:52,720 --> 00:02:55,150
‫สมอ และอะไรประมาณนั้น

38
00:02:55,450 --> 00:03:03,370
‫และฉันจะเลือกดรอปดาวน์สำหรับจุดยึด และเลือกพรีเซ็ตสำหรับจุดยึดตรงกลาง เพราะนั่นคือสิ่งที่ฉันต้องการทำ

39
00:03:03,790 --> 00:03:14,530
‫ฉันต้องการตั้งค่าการจัดตำแหน่งเป็น 0 5 และ 0 5 ซึ่งโดยพื้นฐานแล้วหมายความว่าเรากำลังจัดตำแหน่งให้อยู่ตรงกลางของวัตถุมากกว่าที่มุมซ้ายบน

40
00:03:14,770 --> 00:03:16,690
‫ฉันจะทำสมออีกครั้ง

41
00:03:16,690 --> 00:03:16,930
‫ตกลง.

42
00:03:16,930 --> 00:03:19,060
‫นั่นไม่ใช่ว่าไม่ได้ช่วยอะไรมาก

43
00:03:19,390 --> 00:03:24,520
‫แล้วตำแหน่ง X ทำไมฉันถึงคิดว่าถ้าฉันแค่ตั้งตำแหน่งถัดจากศูนย์และศูนย์เพราะฉันตั้งจุดยึดไว้แบบนั้น

44
00:03:24,520 --> 00:03:31,300
‫ตำแหน่งที่เสียไปของฉันจะไปอยู่ที่ไหนสักแห่งที่อยู่ตรงกลางและฉันจะย้ายมัน ขึ้นเล็กน้อยเลยทีเดียว

45
00:03:31,300 --> 00:03:38,200
‫รักษาตำแหน่ง X ของฉันไว้ที่ศูนย์ ตำแหน่ง Y -50 เพราะฉันต้องการเพิ่มข้อความรองที่บอกว่าอันที่จริง มันอาจจะง่ายกว่าถ้าจะทำซ้ำข้อความอื่นที่นี่

46
00:03:38,200 --> 00:03:43,930
‫เพราะมีการตั้งค่าทั้งหมดที่ฉันต้องการแล้ว

47
00:03:43,930 --> 00:03:46,060
‫ฉันแค่อยากทำให้มันเล็กลงนิดหน่อย

48
00:03:46,060 --> 00:03:55,270
‫วางตำแหน่งศูนย์อีกครั้งและฉันจะบอกว่าระดับจะเริ่มต้นใหม่ใน 5 วินาทีและฉันจะทำให้ขนาดตัวอักษรเล็กลงมาก

49
00:03:55,270 --> 00:04:00,460
‫ดังนั้นมันจึงน้อยลงบนใบหน้าของคุณ อะไรแบบนี้ แล้วแค่เลื่อนลงมาเล็กน้อย รอยบากเล็กน้อย

50
00:04:00,460 --> 00:04:05,950
‫แล้วรีเซ็ตตำแหน่ง X นั้นให้เป็นศูนย์ และพอใจ 100% กับตำแหน่งนั้น

51
00:04:05,950 --> 00:04:08,560
‫ฉันแค่จะขยับมันให้สูงขึ้นอีกนิด

52
00:04:08,560 --> 00:04:14,560
‫ถ้าฉันกด shift ค้างไว้ ฉันสามารถล็อคมันไว้ที่แกนที่ฉันกำลังเคลื่อนที่ด้วย เพื่อให้มันอยู่ตรงกลางไม่มากก็น้อยแบบนั้น

53
00:04:14,590 --> 00:04:15,640
‫ตกลงดังนั้นฉันมีความสุขกับมัน

54
00:04:15,640 --> 00:04:18,940
‫ตอนนี้เราต้องไปข้างหน้าและพยายามวางไข่สิ่งนั้น

55
00:04:18,970 --> 00:04:19,870
‫เราจะทำอย่างนั้นได้อย่างไร?

56
00:04:19,870 --> 00:04:27,520
‫ก่อนอื่น เราจำเป็นต้องรู้ว่าวิดเจ็ตคลาสใดที่เราควรจะวางไข่ และเราจำเป็นต้องรู้ว่าตอนนี้เราจะทำอะไรต่อจากนี้

57
00:04:27,520 --> 00:04:31,870
‫อย่างที่ฉันได้กล่าวไปแล้ว ฉันคิดว่าสถานที่ที่ดีที่จะทำสิ่งนี้คือจากตัวควบคุมเครื่องเล่นเอง

58
00:04:32,200 --> 00:04:38,030
‫และเราจำเป็นต้องรู้ในคอนโทรลเลอร์ของผู้เล่นว่าคลาสใด วิดเจ็ตคลาสใดที่เรากำลังพยายามวางไข่

59
00:04:38,030 --> 00:04:42,670
‫ฉันรู้ว่ามันเป็นคลาสพิมพ์เขียว แต่เราก็ยังต้องการให้มันเป็นคลาสที่เราพยายามจะวางไข่

60
00:04:43,000 --> 00:04:48,880
‫วิธีที่เราจะทำคือสร้างคุณสมบัติใหม่บนนี้ ซึ่งจะแก้ไขได้ทุกที่ และเราต้องการให้นี่เป็นคลาสย่อยของ

61
00:04:48,880 --> 00:04:57,250
‫เพราะนี่เป็นวิธีที่ดีเสมอที่จะทำให้แน่ใจว่าเราได้รับใหม่ ระดับ.

62
00:04:57,250 --> 00:05:05,350
‫โดยพื้นฐานแล้ว คุณสามารถใช้ประเภทที่คุณจัดคลาสได้หากต้องการ แต่นั่นไม่ได้จำกัดประเภทของคลาสที่เราสามารถใช้ได้

63
00:05:05,350 --> 00:05:09,790
‫และที่นี่เราต้องการจำกัดให้คุณใช้วิดเจ็ตเท่านั้น

64
00:05:09,790 --> 00:05:17,390
‫ถ้าคุณไปที่พิมพ์เขียวของคุณ คุณจะเห็นว่าเราไปที่ใดที่หนึ่งในนี้ คุณจะพบที่นั่น

65
00:05:17,410 --> 00:05:22,930
‫คลาสผู้ปกครองใช้วิดเจ็ตที่เรารู้เมื่อคุณใส่คำนำหน้าจะกลายเป็นคุณใช้วิดเจ็ต

66
00:05:23,050 --> 00:05:26,680
‫นี่จึงเป็นคลาสย่อยของ

67
00:05:27,490 --> 00:05:34,360
‫แล้วเราใช้วงเล็บมุมของเราเป็น คุณใช้วิดเจ็ต และฉันจะประกาศต่อที่นี่ แทนที่จะรวมไว้

68
00:05:34,360 --> 00:05:40,150
‫ดังนั้นคลาสที่คุณใช้วิดเจ็ต แล้วเราจะเรียกสิ่งนี้ว่าการแพ้

69
00:05:40,150 --> 00:05:46,630
‫คลาสหน้าจอเพียงเพื่อให้ชัดเจนว่าเกิดอะไรขึ้นที่นั่น

70
00:05:47,020 --> 00:05:56,710
‫ตอนนี้ฉันกำลังจะดำเนินการต่อและคอมไพล์ในขั้นตอนนี้ในขณะที่เราทำสิ่งต่อไปเพราะการคอมไพล์เมื่อเปลี่ยนไฟล์ส่วนหัวใช้เวลานานกว่านั้นเล็กน้อย

71
00:05:56,710 --> 00:06:02,860
‫ที่จริงแล้วการคอมไพล์จะล้มเหลวในขั้นตอนนี้เพราะเรายังไม่ได้รวมโมดูล UMG

72
00:06:02,860 --> 00:06:03,820
‫เราไม่รู้ว่าต้องทำอย่างไร

73
00:06:03,820 --> 00:06:09,760
‫ไม่ต้องกังวลกับการคอมไพล์ในขั้นตอนนี้ และในวิดีโอประมาณ 9 นาที เราจะแก้ไขข้อผิดพลาดนี้

74
00:06:10,060 --> 00:06:14,560
‫ตอนนี้ใน C ++ สิ่งที่เราจะทำคือวางวิดเจ็ตนั้นขึ้นมา

75
00:06:14,560 --> 00:06:17,290
‫เราเลยอยากจะทำมันก่อนถึงเวลานั้นด้วยซ้ำ

76
00:06:17,290 --> 00:06:20,320
‫มันไม่สำคัญหรอกเพราะตัวจับเวลาไม่รอ

77
00:06:20,320 --> 00:06:24,820
‫มันแค่ตั้งเวลาแล้วตรงไปยังบรรทัดถัดไปของรหัส ดังนั้นเราจะไม่รอ 5 วินาทีหากเราทำสิ่งนี้โดยตรง

78
00:06:24,820 --> 00:06:29,860
‫หากเราวางไข่ UI ทันทีหลังจากนั้น ไม่สำคัญจริงๆ ว่าเราจะทำสิ่งนี้ในลำดับใด ใน.

79
00:06:30,220 --> 00:06:36,520
‫ดังนั้นสิ่งที่เราจะทำคือใช้ฟังก์ชันที่เรียกว่า create widget ซึ่งไม่สามารถใช้งานได้ในขณะนี้

80
00:06:36,520 --> 00:06:38,980
‫ดังนั้นเราต้องแฮชรวมอะไรบางอย่างก่อน

81
00:06:38,980 --> 00:06:50,260
‫และสิ่งที่เราจะรวมไว้คือวิดเจ็ตผู้ใช้สแลชพิมพ์เขียวไปข้างหน้า และนั่นคือคลาสที่เราต้องใช้เพื่อเข้าถึงฟังก์ชันสร้างวิดเจ็ตนี้

82
00:06:50,740 --> 00:06:53,620
‫และโดยพื้นฐานแล้วเราจะบอกว่าสร้างวิดเจ็ต

83
00:06:53,620 --> 00:06:58,270
‫มันจะต้องมีจริง ๆ แล้วเรามาดูกันว่าเราจะต้องจัดหาอะไรให้บ้าง

84
00:06:58,270 --> 00:07:00,910
‫ฉันจะไปที่ F 12 เพื่อนำไปใช้

85
00:07:00,910 --> 00:07:07,330
‫คุณจะเห็นว่ามันซับซ้อนเล็กน้อยที่จะเห็น แต่เรามีพารามิเตอร์เทมเพลตที่นี่ ซึ่งเป็นค่าเริ่มต้นที่คุณใช้วิดเจ็ต

86
00:07:07,330 --> 00:07:11,080
‫ดังนั้นเราอาจไม่จำเป็นต้องระบุสิ่งนั้น

87
00:07:11,590 --> 00:07:19,390
‫จากนั้นมีออบเจ็กต์ที่เป็นเจ้าของและคลาสที่เราต้องสร้าง จากนั้นชื่อวิดเจ็ตที่เราไม่จำเป็นต้องระบุ

88
00:07:19,390 --> 00:07:23,830
‫จากนั้นจะส่งคืนเป็นตัวชี้ไปยังวิดเจ็ต

89
00:07:24,040 --> 00:07:29,200
‫สิ่งที่ผมจะทำจริงๆคือในนี้ เราจะให้เจ้าของวัตถุ

90
00:07:29,200 --> 00:07:31,560
‫ตอนนี้มีเพียงบางสิ่งเท่านั้นที่สามารถเป็นเจ้าของวิดเจ็ตได้

91
00:07:31,580 --> 00:07:36,310
‫หนึ่งในนั้นคือส่วนควบคุมของผู้เล่น ดังนั้นเราจึงสามารถผ่านเข้าไปได้

92
00:07:36,310 --> 00:07:40,750
‫จากนั้นสิ่งต่อไปคือเราต้องการส่งผ่านในคลาสย่อย RT ของคุณโดยใช้วิดเจ็ต

93
00:07:40,750 --> 00:07:52,150
‫โชคดีที่เราได้กำหนดค่านั้นในไฟล์ส่วนหัวแล้ว ดังนั้นเราจึงสามารถส่งต่อเข้าไปได้ และฉันจะหยุดการเยื้องของฉันจากการพยายามแก้ไขตัวเองในขณะที่ฉันไม่ได้ใส่เครื่องหมายอัฒภาคที่ท้ายบรรทัด

94
00:07:52,150 --> 00:07:55,420
‫แล้วก็ไปดูกันเลยว่ามีอะไรอีกบ้าง

95
00:07:55,420 --> 00:07:56,050
‫แค่นั้นแหละ.

96
00:07:56,050 --> 00:07:58,540
‫มันเพิ่งส่งคืนวิดเจ็ต ณ จุดนี้

97
00:07:58,540 --> 00:08:06,910
‫สิ่งที่เราทำได้คือมีตัวชี้ให้คุณ ใช้วิดเจ็ตสตาร์ และนี่จะเป็นหน้าจอที่เสียไป

98
00:08:06,910 --> 00:08:09,310
‫ดังนั้นเราจึงมีคลาสเสียหน้าจอ

99
00:08:09,310 --> 00:08:13,000
‫หลังจากที่เราสร้างวิดเจ็ตแล้ว มันจะกลายเป็นหน้าจอหลวมจริงๆ

100
00:08:13,000 --> 00:08:16,060
‫สิ่งต่อไปที่เราต้องทำคือทำให้ UI นี้มองเห็นได้

101
00:08:16,060 --> 00:08:20,020
‫เราทำเช่นนั้นโดยเพิ่มลงในวิวพอร์ตด้วยถ้อยคำที่ไม่จริง

102
00:08:20,020 --> 00:08:27,100
‫แต่ก่อนอื่น เนื่องจากเราเพิ่มวิวพอร์ตโดยการเรียกใช้ฟังก์ชันบนหน้าจอสีน้ำเงิน เราจึงต้องตรวจสอบให้แน่ใจว่าไม่ใช่ตัวชี้ว่าง

103
00:08:27,100 --> 00:08:32,410
‫แล้วถ้าหน้าจอเสียไม่เท่ากับ null pointer ทำไมมันถึงเป็น null pointer ล่ะ?

104
00:08:32,410 --> 00:08:37,210
‫อีกอย่าง ความท้าทายเล็กๆ น้อยๆ ที่คุณจะได้เห็นหากคุณสามารถเข้าใจได้ว่าทำไมเราถึงลงเอยด้วยตัวชี้ค่าว่างที่นี่

105
00:08:37,600 --> 00:08:41,200
‫เหตุผลหนึ่งคือบางทีเราลืมตั้งค่าคลาสหน้าจอเสีย

106
00:08:41,200 --> 00:08:47,860
‫และถ้าเป็นกรณีนี้ และเราไม่มีชุดคลาสหน้าจอสีน้ำเงินที่ถูกต้อง สร้างวิดเจ็ตก็จะส่งคืนตัวชี้ว่างให้เรา

107
00:08:47,860 --> 00:08:54,340
‫และเราไม่ต้องการให้เกิดขึ้น และเราไม่ต้องการเรียกใช้ฟังก์ชันบนตัวชี้ค่าว่างอย่างแน่นอน

108
00:08:54,340 --> 00:08:56,500
‫ดังนั้นเราจะทำลูกศรหน้าจอหาย

109
00:08:56,740 --> 00:09:01,270
‫แล้วสิ่งที่เราต้องการที่นี่คือฟังก์ชันที่เรียกว่าเพิ่มไปยังวิวพอร์ต

110
00:09:02,060 --> 00:09:07,820
‫ซึ่งจะทำเพียงแค่นั้นไปและเพิ่มไปที่หน้าจอเพื่อให้เราเห็นหน้าจอที่หลวม

111
00:09:08,090 --> 00:09:17,330
‫ตอนนี้ฉันกำลังจะดำเนินการต่อและรวบรวมสิ่งนั้นด้วย และเข้าไปในหนึ่งรีลและเปิดพิมพ์เขียวของเราสำหรับตัวควบคุมผู้เล่น

112
00:09:17,330 --> 00:09:19,100
‫ดังนั้นตัวควบคุมผู้เล่นมือปืนที่นี่

113
00:09:19,550 --> 00:09:25,520
‫และเราน่าจะเห็นตัวแปรที่ยังไม่ปรากฏขึ้นที่ไหนสักแห่งในนี้

114
00:09:25,640 --> 00:09:27,110
‫บางทีฉันอาจมีข้อผิดพลาดในการสร้าง

115
00:09:27,110 --> 00:09:28,850
‫ไปดูบันทึกข้อความกันเลย

116
00:09:29,180 --> 00:09:36,140
‫ใช่ เราสามารถเห็นข้อผิดพลาดในการสร้างบางอย่างในที่นี้ กล่าวคือ สิ่งแปลก ๆ เหล่านี้เกี่ยวกับสัญลักษณ์ภายนอกที่หายไป

117
00:09:36,140 --> 00:09:41,780
‫หากเรามีรูปลักษณ์เพียงเล็กน้อยที่พูดถึงคุณ ให้ใช้วิดเจ็ตที่ไม่พร้อมใช้งานในขณะนี้

118
00:09:41,780 --> 00:09:50,840
‫หากคุณย้อนกลับไปดูการบรรยายก่อนหน้านี้ เราทราบดีว่าข้อผิดพลาดประเภทนี้มักจะเกิดขึ้นเมื่อเราขาดการพึ่งพาโมดูล

119
00:09:50,840 --> 00:09:57,770
‫ดังนั้น ถ้าเราไปและเปิดเกมยิงแบบง่ายๆ ของเรา dot build dot CSS และฉันกำลังจะปิดเทอร์มินัลเพื่อเพิ่มพื้นที่อีกเล็กน้อย

120
00:09:57,770 --> 00:10:04,370
‫คุณจะเห็นสิ่งที่เราต้องทำคือเพิ่มการพึ่งพาสาธารณะใหม่ที่นี่

121
00:10:04,580 --> 00:10:12,140
‫ในตอนท้าย เราจะเพิ่มการพึ่งพาสาธารณะสำหรับ UMG ดังนั้นจุลภาคใหม่

122
00:10:12,140 --> 00:10:20,600
‫จากนั้นในเครื่องหมายคำพูด เราจะใส่ UMG และนั่นทำให้เราสามารถใช้ประโยชน์จากการรวมที่เรามีที่นี่

123
00:10:20,600 --> 00:10:24,380
‫วิดเจ็ตผู้ใช้ blueprint forward slash

124
00:10:24,680 --> 00:10:28,700
‫สิ่งของทั้งหมดนั้นอยู่ในโมดูลที่แยกจากกันกับสิ่งของมาตรฐานที่รวมอยู่ด้วย

125
00:10:28,700 --> 00:10:32,690
‫ดังนั้นเราจึงต้องไปบอก Unreal ว่าเราต้องการใช้โมดูลนั้นใน C ++ ของเรา

126
00:10:32,690 --> 00:10:34,640
‫ไปข้างหน้าและสร้างและดูว่ามันทำงาน

127
00:10:34,640 --> 00:10:36,410
‫ตอนนี้ดูประสบความสำเร็จ

128
00:10:36,410 --> 00:10:42,500
‫หากเราเข้าไปที่เครื่องมือแก้ไขและกลับไปที่เกมยิงปืนของเรา เหตุผลบางอย่างที่ฉันไม่คิดว่ามีการโหลดซ้ำอย่างถูกต้อง

129
00:10:42,500 --> 00:10:46,340
‫ดังนั้นฉันจึงต้องคอมไพล์ที่นี่ในตัวแก้ไข

130
00:10:46,340 --> 00:10:48,430
‫เรากลับไปที่ตัวควบคุมผู้เล่นเกมยิงปืน

131
00:10:48,430 --> 00:10:50,630
‫ในที่สุดคุณจะเห็นคลาสหน้าจอที่เสียไป

132
00:10:50,850 --> 00:10:57,830
‫เราสามารถคลิกดรอปดาวน์ที่นั่นและเลือก AWP ขีดเส้นใต้หน้าจอเสียที่นั่น คอมไพล์

133
00:10:57,830 --> 00:11:00,140
‫บันทึกแล้วไปฆ่ากันเอง

134
00:11:00,140 --> 00:11:01,900
‫เราจะโดนยิงสองสามครั้ง

135
00:11:01,910 --> 00:11:03,380
‫ปังปัง.

136
00:11:03,380 --> 00:11:04,250
‫และที่นั่นคุณไป

137
00:11:04,250 --> 00:11:09,320
‫หน้าจอ Lou ของเราปรากฏขึ้นเพื่อแจ้งให้เราทราบว่าระดับนั้นกำลังจะเริ่มต้นใหม่ในอีก 5 วินาที

138
00:11:09,320 --> 00:11:10,220
‫และมันก็ทำ

139
00:11:10,220 --> 00:11:11,270
‫มันทำ

140
00:11:11,270 --> 00:11:20,030
‫ตอนนี้คุณไม่เพียงแต่รู้วิธีสร้างกราฟิก UMG เท่านั้น แต่ยังรู้วิธีที่คุณสามารถวางไข่เหล่านี้จาก C ++

141
00:11:20,030 --> 00:11:22,070
‫มากกว่าจากพิมพ์เขียว

142
00:11:22,070 --> 00:11:30,680
‫การบรรยายครั้งต่อไป เราจะมองในแง่ร้ายน้อยลงในสิ่งต่าง ๆ และลองดูว่าเราสามารถสร้างเงื่อนไขการชนะสำหรับเกมนี้ได้หรือไม่

143
00:11:30,680 --> 00:11:31,550
‫ฉันจะไปพบคุณที่นั่น.

