﻿1
00:00:04,360 --> 00:00:05,440
‫สวัสดีและยินดีต้อนรับ.

2
00:00:05,440 --> 00:00:15,010
‫ในการบรรยายนี้ เราจะมาแนะนำโค้ดชิ้นนี้ในที่นี้ ช่วงของตัวแสดง RT และดูว่าจะช่วยให้เราสามารถทำซ้ำนักแสดงทั้งหมดในระดับที่กำหนดได้อย่างไร

3
00:00:15,010 --> 00:00:16,810
‫มาดูกันว่ามันทำงานอย่างไร

4
00:00:17,410 --> 00:00:24,760
‫ดังนั้นในขณะนี้ในการจำนำที่ถูกฆ่าในโหมดเกมการฆ่าทั้งหมดของเราที่เรากำลังเรียก เกมได้สิ้นสุดลงแล้วบนตัวควบคุมของผู้เล่น แต่อันที่จริง

5
00:00:24,760 --> 00:00:31,750
‫เกมได้สิ้นสุดลงแล้วเป็นฟังก์ชันบนตัวควบคุมทั้งหมดที่มี A ฉันหรือผู้เล่นผู้ควบคุมและเราน่าจะแจ้งผู้ควบคุม

6
00:00:31,750 --> 00:00:43,210
‫AI ด้วยว่าเกมจบลงแล้วและนั่นจะเป็นอย่างนั้นอย่างแน่นอนหรือจะทำให้เงื่อนไขการชนะง่ายขึ้นเช่นกันเพราะเราไม่จำเป็นต้องมี

7
00:00:43,210 --> 00:00:46,240
‫ผู้เล่นจำนำมาที่นี่

8
00:00:46,870 --> 00:00:50,140
‫แล้วเราจะดำเนินการอย่างไรต่อไปดี?

9
00:00:50,140 --> 00:00:59,500
‫ฉันจะสร้างฟังก์ชันใหม่ในโหมดเกม KML ซึ่งเป็นโหมดส่วนตัวที่เรียกว่า End Game ซึ่งจะรับผิดชอบการกระทำนี้

10
00:00:59,500 --> 00:01:02,710
‫จบเกมแล้วต้องมีข้อมูล

11
00:01:02,710 --> 00:01:04,780
‫จะต้องรู้ว่าใครชนะ

12
00:01:04,780 --> 00:01:06,730
‫เป็นผู้เล่นหรือเป็นเอ ฉัน.?

13
00:01:06,760 --> 00:01:11,800
‫ฉันจะสร้างบูลที่เรียกว่า B คือผู้เล่นที่ชนะ

14
00:01:12,160 --> 00:01:19,930
‫และนั่นคือสิ่งที่บอกเราว่าเราควรจะบอก AI ว่าชนะหรือบอกผู้เล่นว่าชนะหรือไม่

15
00:01:19,930 --> 00:01:22,660
‫เพราะจำไว้ว่าที่นี่เกมของเราได้จบลงแล้ว

16
00:01:22,660 --> 00:01:26,740
‫ใช้บูลีนบอกผู้ควบคุมว่าเป็นหนึ่งในผู้ชนะหรือไม่

17
00:01:27,490 --> 00:01:31,960
‫สิ่งที่เราจะต้องทำคือ คิดให้ออก อย่างแรกเลย ไปข้างหน้าและสร้างการนำไปใช้

18
00:01:31,960 --> 00:01:35,380
‫ดังนั้นฉันจะทำการควบคุมกะ P แล้วสร้างการนำไปใช้

19
00:01:35,950 --> 00:01:45,580
‫จากนั้นเราจะต้องค้นหาว่าเราจะหาคอนโทรลเลอร์ทั้งหมดได้อย่างไรในฉากของเรา เพื่อที่เราจะได้รู้ว่าเกมจบลงที่คอนโทรลเลอร์เหล่านั้น

20
00:01:46,390 --> 00:01:51,880
‫วิธีที่เรากำลังจะทำคือใช้การเรียกตัวช่วยเครื่องยนต์

21
00:01:51,880 --> 00:01:57,570
‫ดังนั้นถ้าเราไปแฮช เราจะใช้ engine utils ก่อนเลย

22
00:01:57,570 --> 00:02:05,620
‫และนั่นจะนำไปสู่ขอบเขตของตัวช่วยที่ฉันต้องการ และตัวช่วยนั้นเรียกว่า T Actor Range และระยะของตัวแสดง

23
00:02:05,620 --> 00:02:08,260
‫T เป็นสิ่งที่แม่แบบ

24
00:02:08,260 --> 00:02:11,500
‫เราก็ทำวงเล็บเหลี่ยมตรงนี้ได้

25
00:02:11,590 --> 00:02:18,760
‫จากนั้นเราสามารถใส่คอนโทรลเลอร์แล้วใส่วงเล็บและรับโลก

26
00:02:18,760 --> 00:02:20,050
‫เมื่อกี้นี้จะทำอะไร?

27
00:02:20,080 --> 00:02:28,840
‫มันจะส่งคืนวัตถุ range ให้เรา ซึ่งโดยพื้นฐานแล้วเหมือนกับรายการที่อยู่เหนือตัวควบคุมทั้งหมด

28
00:02:28,840 --> 00:02:35,800
‫นั่นเป็นเหตุผลที่เรามีพารามิเตอร์ตัวควบคุมนั้นในโลก เค ระดับและเราสามารถใช้สิ่งนี้ใน

29
00:02:35,800 --> 00:02:37,240
‫for วนซ้ำได้

30
00:02:37,240 --> 00:02:39,610
‫ขอผมเริ่มห่อนี้ใน for loop

31
00:02:39,610 --> 00:02:44,200
‫เราจะทำ a แทนตัวควบคุม A

32
00:02:44,200 --> 00:02:51,190
‫ดังนั้นสิ่งที่เป็นตัวแปรที่เราจะกำหนดคือตัวชี้ตัวควบคุม A ซึ่งฉันจะเรียกตัวควบคุม

33
00:02:52,180 --> 00:02:56,140
‫แล้วเราใช้เครื่องหมายทวิภาคเพื่อกำหนดขอบเขต

34
00:02:56,140 --> 00:02:58,240
‫มันจะเป็นช่วง T แอคทีฟนี้

35
00:02:58,450 --> 00:03:03,160
‫จากนั้นเราสามารถใส่วงเล็บปิดและวงเล็บปีกกาของเราได้

36
00:03:03,160 --> 00:03:04,900
‫นี่พูดว่าอะไรนะ?

37
00:03:04,900 --> 00:03:14,380
‫มันบอกว่าเรากำลังจะทำสี่ลูปบนคอนโทรลเลอร์ทุกตัวในโลก และมันจะอยู่ในตัวแปรที่เรียกว่าคอนโทรลเลอร์

38
00:03:15,120 --> 00:03:17,700
‫และตอนนี้มีบางสิ่งที่คุณอาจจำเป็นต้องรู้

39
00:03:17,700 --> 00:03:22,530
‫อย่างหนึ่งก็คือเราสามารถสอบถามคอนโทรลเลอร์ว่าเป็นตัวควบคุมของผู้เล่นโดยไม่ต้องแคสต์หรือไม่

40
00:03:22,530 --> 00:03:28,620
‫เราสามารถทำลูกศรควบคุมได้จริง ๆ แล้วฉันคิดว่าฉันจะต้องรวมคอนโทรลเลอร์ของฉันไว้ที่นี่

41
00:03:28,620 --> 00:03:38,400
‫ดังนั้นการรวมแฮชไว้ที่ด้านบน เรากำลังจะทำเฟรมเวิร์กเกมฟอร์เวิร์ดสแลชคอนโทรลเลอร์ H และตอนนี้การเติมข้อความอัตโนมัติอาจใช้งานได้

42
00:03:38,400 --> 00:03:39,030
‫ใช่ มันมี

43
00:03:39,030 --> 00:03:41,790
‫ดังนั้นสิ่งที่เราทำได้คือชัดเจนว่าเกมได้จบลงแล้ว

44
00:03:41,790 --> 00:03:46,530
‫นั่นคือสิ่งที่เติมข้อความอัตโนมัติครั้งแรกของฉันที่นี่ แต่เราสามารถพูดได้ว่าเป็นตัวควบคุมผู้เล่น

45
00:03:46,530 --> 00:03:58,410
‫โดยทั่วไปจะบอกว่าเป็นสิ่งนี้ในโลกของตัวควบคุมผู้เล่นและนั่นจะทำให้เราสามารถตัดสินใจได้ว่าเราควรส่งผ่านจริงหรือเท็จเพื่อสิ้นสุดเกม

46
00:03:58,410 --> 00:04:04,890
‫ความท้าทายของฉันสำหรับคุณคือการกรอก for loop โดยการเรียก game ได้จบลงด้วยพารามิเตอร์ boolean

47
00:04:04,890 --> 00:04:05,880
‫ที่ถูกต้อง

48
00:04:06,240 --> 00:04:12,570
‫เรากำลังจะทำสิ่งนี้โดยพื้นฐานแล้วมันควรจะเป็นจริงถ้าตัวควบคุมที่เรากำลังคุยกับตัวควบคุมที่อยู่ใน

49
00:04:12,570 --> 00:04:18,990
‫for loop เป็นตัวควบคุมของผู้เล่นและบูลีนที่เราส่งผ่านไปบอกว่าตัวควบคุมเครื่องเล่น

50
00:04:18,990 --> 00:04:23,700
‫เป็นผู้ชนะควรเป็นจริงด้วย

51
00:04:23,700 --> 00:04:31,290
‫หากไม่ใช่ผู้ควบคุมของผู้เล่นและไม่ใช่ผู้เล่น ผู้เล่นจะเป็นผู้ชนะโดยพื้นฐานแล้วโดยบอกว่านี่คือพันธมิตรและ

52
00:04:31,290 --> 00:04:38,190
‫I เป็นผู้ชนะ หากผู้เล่นควบคุม แต่ผู้เล่นไม่ใช่ผู้ชนะ และเป็นเท็จหากไม่ใช่ผู้ควบคุมของผู้เล่น

53
00:04:38,190 --> 00:04:40,890
‫แต่ผู้เล่นคือผู้ชนะ

54
00:04:40,890 --> 00:04:43,530
‫คุณจะเห็นว่ามันกำลังจะไปไหน หวังว่า

55
00:04:43,530 --> 00:04:46,680
‫ดังนั้นให้หยุดวิดีโอชั่วคราวและลองใช้งานในลักษณะนี้

56
00:04:46,680 --> 00:04:47,940
‫คุณอาจใช้คำสั่ง if

57
00:04:47,940 --> 00:04:53,820
‫คุณอาจใช้ตรรกะอื่นเพื่อให้คุณสามารถคำนวณวิดีโอหยุดชั่วคราวแบบบูลีนและลองใช้ได้เลย

58
00:04:54,930 --> 00:04:55,380
‫ตกลง.

59
00:04:55,380 --> 00:04:55,950
‫ยินดีต้อนรับกลับ.

60
00:04:55,950 --> 00:04:57,930
‫คุณจึงทำได้หลายวิธี

61
00:04:57,930 --> 00:05:05,250
‫วิธีหนึ่งอาจเป็นการบอกว่าถ้าผึ้งเป็นผู้เล่น ควบคุมผู้ชนะ จากนั้นเราจะใส่บางอย่างในนี้

62
00:05:05,250 --> 00:05:14,430
‫หากคำสั่งที่เราอาจจะทำบูลที่นี่เพื่อตัดสินใจว่าโดยพื้นฐานแล้ว B เป็นผู้ควบคุมผู้เล่น

63
00:05:15,210 --> 00:05:18,990
‫ซึ่งเราจะประหยัดจากการที่เราทำการคอนโทรล

64
00:05:19,840 --> 00:05:23,740
‫Arrow the เป็นตัวควบคุมผู้เล่นเช่นนั้น

65
00:05:24,130 --> 00:05:28,310
‫แล้วเราอาจจะบอกว่า โอเค เราต้องการเรียกผู้ควบคุม

66
00:05:28,330 --> 00:05:31,060
‫เกมลูกศรสิ้นสุดแล้ว

67
00:05:31,210 --> 00:05:33,280
‫เรากำลังจะส่งผ่านตัวชี้ค่าว่างสำหรับตอนนี้

68
00:05:33,280 --> 00:05:40,690
‫แล้วเราจะบอกว่า ถ้าผู้เล่นเป็นผู้ชนะ และเราเป็นผู้ควบคุมผู้เล่น ใช่แล้ว

69
00:05:40,690 --> 00:05:43,300
‫ให้ไปกับคุณค่านั้น

70
00:05:43,300 --> 00:05:44,980
‫ดังนั้นเล่นคอนโทรลเลอร์

71
00:05:45,010 --> 00:05:48,100
‫มิฉะนั้น ถ้าไม่ใช่ตัวควบคุมของผู้เล่น มันจะหายไป

72
00:05:48,100 --> 00:05:55,360
‫และเราสามารถลบล้างสิ่งนี้ได้ ดังนั้นเราสามารถพูดได้อีกอย่างว่าเราจะเรียกเกมคอนโทรลเลอร์ที่จบลงโดยที่

73
00:05:55,360 --> 00:06:02,710
‫not is player controller โดยพื้นฐานแล้วเพราะเรากำลังบอกว่าผู้เล่นไม่ใช่ผู้ชนะ ดวงตาเป็นผู้ชนะในข้อความนี้

74
00:06:02,710 --> 00:06:04,900
‫.

75
00:06:04,900 --> 00:06:14,380
‫ดังนั้นสิ่งที่เราอยากทำคือบอกว่าขึ้นอยู่กับว่าโดยพื้นฐานแล้วตรงกันข้ามกับว่าผู้เล่นชนะหรือไม่ซึ่งก็คือการบอกว่าตาชนะ

76
00:06:14,680 --> 00:06:17,370
‫นั่นเป็นวิธีหนึ่งที่จะทำได้อย่างแน่นอน

77
00:06:17,380 --> 00:06:22,990
‫แต่มีอีกวิธีหนึ่งที่ง่ายกว่า นั่นคือเราเป็นผู้ชนะหรือไม่?

78
00:06:22,990 --> 00:06:26,020
‫ดังนั้นจงเป็นผู้ชนะ

79
00:06:26,530 --> 00:06:36,790
‫และนี่สามารถพูดได้ง่ายๆ ว่าคุณเป็นผู้ควบคุมผู้เล่นหรือไม่ เท่ากับเป็นผู้ชนะของผู้เล่น

80
00:06:36,970 --> 00:06:43,000
‫ตอนนี้ มาคิดเรื่องนี้กันอีกหน่อย และผมจะทำให้มันสมบูรณ์ แล้วเราจะพูดถึงมัน

81
00:06:43,000 --> 00:06:53,050
‫ดังนั้นเราจะบอกว่าเกมคอนโทรลเลอร์ได้จบลงแล้วจะเป็นตัวชี้ว่างโดยที่ be จะเป็นผู้ชนะในที่นี้

82
00:06:53,950 --> 00:06:56,630
‫ทีนี้ ทำไมคำสั่งนี้ถึงใช้ได้ผล?

83
00:06:56,650 --> 00:06:58,630
‫ลองคิดถึงกรณีต่างๆ กัน ใช่ไหม

84
00:06:58,630 --> 00:07:04,300
‫เรามีผู้เล่นควบคุมที่นี่และผู้เล่นเป็นผู้ชนะงั้นหรือ?

85
00:07:04,300 --> 00:07:06,730
‫ใช่ เราเป็นผู้ชนะ และพวกเขาเท่าเทียมกัน

86
00:07:06,730 --> 00:07:07,720
‫จริงและจริง

87
00:07:08,290 --> 00:07:13,660
‫แล้วถ้านี่ไม่ใช่ตัวควบคุมของผู้เล่นและผู้เล่นไม่ใช่ผู้ชนะล่ะ?

88
00:07:13,690 --> 00:07:15,370
‫ดีแล้วที่เป็นเท็จ

89
00:07:15,370 --> 00:07:21,570
‫และนี่ตรงนี้ก็เป็นเท็จเช่นกัน เพื่อให้ทั้งสองมีค่าเท่ากัน และผลที่ได้คือผู้ชนะ

90
00:07:21,580 --> 00:07:22,100
‫จริงหรือ?

91
00:07:22,120 --> 00:07:27,370
‫ใช่ เพราะถ้าเราเป็น AI และ AI เป็นผู้ชนะ เราก็ควรจะเป็นผู้ชนะ

92
00:07:27,880 --> 00:07:33,370
‫มิฉะนั้น ถ้าสองตัวนี้ไม่เท่ากัน ผม อี ว่าเรามีตัวควบคุม AI แต่ผู้เล่นเป็นผู้ชนะ

93
00:07:33,370 --> 00:07:40,960
‫หรือเรามีตัวควบคุมผู้เล่นและ AI เป็นผู้ชนะ แล้วเราจะมีความจริงและเท็จ หรือเท็จและจริง

94
00:07:41,170 --> 00:07:45,280
‫สองตัวนี้จะไม่เท่ากัน และบูลีนจะประเมินเป็นเท็จ

95
00:07:45,280 --> 00:07:51,730
‫คุณจะเห็นได้ว่าในแต่ละกรณีและฉันได้ผ่านทุกกรณีไปแล้ว เรื่องนี้จบลงด้วยคำตอบที่ถูกต้อง

96
00:07:51,730 --> 00:07:53,740
‫เราจึงรู้ว่านี่คือคำตอบที่ถูกต้อง

97
00:07:53,740 --> 00:08:00,400
‫นี่คือสิ่งที่ดีเกี่ยวกับบูลีนคือโดยปกติคุณสามารถประเมินกรณีทั้งหมดได้เพราะคุณสามารถพูดได้ว่าเกิดอะไรขึ้น

98
00:08:00,400 --> 00:08:01,870
‫มันจะเป็นจริงและจริง

99
00:08:01,870 --> 00:08:02,980
‫มันจะเป็นเรื่องจริงและเท็จ

100
00:08:02,980 --> 00:08:03,970
‫มันจะเป็นเท็จและเป็นจริง

101
00:08:03,970 --> 00:08:05,280
‫มันจะเป็นเท็จและเป็นเท็จ

102
00:08:05,290 --> 00:08:06,940
‫คุณสามารถประเมินกรณีเหล่านั้นทั้งหมดได้

103
00:08:06,940 --> 00:08:12,610
‫หากทุกกรณีถูกต้อง แสดงว่าคุณมีคำสั่งบูลีนที่ถูกต้อง

104
00:08:13,090 --> 00:08:13,600
‫เย็น.

105
00:08:13,600 --> 00:08:15,880
‫นั่นคือวิธีที่เราจะคำนวณ B เป็นผู้ชนะ

106
00:08:15,880 --> 00:08:18,460
‫สุดท้ายนี้ เราแค่ต้องเรียกโหมดจบเกมของเรา

107
00:08:18,460 --> 00:08:24,280
‫ในขณะนี้ เรากำลังดำเนินการเรียกโดยตรงไปยังเกม play controller ที่สิ้นสุดแล้ว

108
00:08:24,280 --> 00:08:31,630
‫และสิ่งที่ผมอยากจะทำจริงๆ คือ ไปข้างหน้าและจบเกม และเราต้องการที่จะส่งผ่านเป็นเท็จ เพราะนี่คือสถานการณ์ที่ผู้เล่นแพ้จริง

109
00:08:31,630 --> 00:08:36,630
‫ๆ และนั่นคือสิ่งที่เราต้องการบรรลุ

110
00:08:36,640 --> 00:08:42,340
‫อีกอย่างที่ควรทราบในที่นี้คือ null pointer ที่เราได้ส่งผ่านเข้ามา

111
00:08:42,400 --> 00:08:50,590
‫จะนำเราไปสู่ปัญหาต่างๆ ตามมา เพราะถ้าผู้เล่นชนะจริงๆ มันจะพยายามดึงความสนใจไปจากผู้เล่นของเรา

112
00:08:50,590 --> 00:08:52,900
‫จำนำ.

113
00:08:52,900 --> 00:09:01,270
‫ดังนั้นสิ่งที่เราต้องการส่งผ่านในที่นี้คือโฟกัสควรอยู่ที่ตัวควบคุม จุดรับจำนำ

114
00:09:01,660 --> 00:09:10,630
‫และโดยพื้นฐานแล้วบอกว่าคุณควรโฟกัสที่ตัวควบคุมเครื่องเล่นของคุณเอง โดยพื้นฐานแล้วกล้องของคุณควรจะชี้ไปที่ใด

115
00:09:10,630 --> 00:09:12,550
‫มันควรจะยังชี้ไปที่เบี้ยของคุณ

116
00:09:12,970 --> 00:09:17,170
‫เหตุใดเราจึงทำเช่นนี้และเหตุใดจึงมีตัวเลือกนี้ตั้งแต่แรก

117
00:09:17,170 --> 00:09:23,890
‫ในหลาย ๆ เกม คุณมักจะหรือหลาย ๆ เกมที่มีรูปแบบการจับคู่ คุณอาจมีว่าถ้าเกมจบลง

118
00:09:23,890 --> 00:09:27,400
‫คุณต้องการไปและปฏิบัติตามจำนำ

119
00:09:27,400 --> 00:09:28,300
‫นั่นคือผู้ชนะ

120
00:09:28,300 --> 00:09:34,300
‫ลองนึกภาพเหมือนสถานการณ์ของ Fortnite คุณมักจะไปตามคนที่ฆ่าคุณ

121
00:09:34,330 --> 00:09:36,430
‫นี่คือกลไกในการทำเช่นนี้

122
00:09:36,430 --> 00:09:40,470
‫โดยพื้นฐานแล้วคุณผ่านในเบี้ยของผู้ฆ่า

123
00:09:40,480 --> 00:09:41,800
‫นั่นไม่ใช่สิ่งที่เรากำลังทำในเกมของเรา

124
00:09:41,800 --> 00:09:45,460
‫เราจะพิจารณา Apple ต่อไป ไม่ว่าเราจะชนะหรือตาย

125
00:09:45,460 --> 00:09:46,990
‫แค่นั้นก็เพียงพอแล้วสำหรับการบรรยาย

126
00:09:46,990 --> 00:09:50,110
‫ลองคอมไพล์ดูว่ามันใช้งานได้ไหม

127
00:09:50,110 --> 00:09:53,440
‫มาดำดิ่งสู่ Unreal แล้วกดเล่น

128
00:09:53,470 --> 00:09:56,110
‫ไปฆ่าตัวตายกันเถอะ

129
00:09:56,110 --> 00:09:56,980
‫ไปเลย

130
00:09:56,980 --> 00:09:58,750
‫ทุกอย่างทำงานเหมือนเดิม

131
00:09:58,750 --> 00:10:03,220
‫เรายังคงได้รับการเรียกนั้นไปยังตัวควบคุมเครื่องเล่นและจากนั้นเราจะเริ่มต้นใหม่

132
00:10:03,220 --> 00:10:03,790
‫สิ่งที่ดี

133
00:10:03,790 --> 00:10:06,460
‫ในการบรรยายครั้งนี้ เพื่อสรุป เราได้เห็นอะไรบ้าง?

134
00:10:06,460 --> 00:10:16,930
‫เราได้เห็นแล้วว่าเราจะวนซ้ำนักแสดงในระดับนั้นได้อย่างไร เพื่อที่จะทำอะไรบางอย่าง เช่น เรียกใช้ฟังก์ชันกับนักแสดงแต่ละคน

135
00:10:16,930 --> 00:10:23,680
‫การบรรยายครั้งต่อไปเราจะใช้ช่วง T นักแสดงอีกครั้ง คราวนี้เพื่อคำนวณว่าผู้เล่นชนะหรือไม่

136
00:10:23,680 --> 00:10:24,400
‫แล้วเจอกัน.

