﻿1
00:00:04,370 --> 00:00:05,390
‫สวัสดีและยินดีต้อนรับ.

2
00:00:05,390 --> 00:00:12,170
‫ในการบรรยายนี้ เราจะตั้งค่าการเชื่อมโยงระหว่างผู้เสนอญัตติและทริกเกอร์โดยใช้เทคนิคที่เรียกว่าการฉีดยาพึ่งพา

3
00:00:12,170 --> 00:00:20,810
‫ดังนั้นเมื่อจบการบรรยาย ถ้าเราติดการ์กอยล์ ประตูก็จะเลื่อนลงหรืออย่างน้อย บางส่วนไม่

4
00:00:20,810 --> 00:00:24,260
‫มาดูกันว่ามันทำงานอย่างไร

5
00:00:25,080 --> 00:00:26,460
‫และฉันคว้าถ้วย

6
00:00:26,490 --> 00:00:33,030
‫เราได้เห็นแล้วว่ามีการพึ่งพา สิ่งที่เราเรียกว่าการพึ่งพาสำหรับการจัดการทางฟิสิกส์

7
00:00:33,030 --> 00:00:42,960
‫ตัวจับนี้ไม่สามารถทำงานได้จนกว่าคุณจะมีองค์ประกอบที่จับทางฟิสิกส์อยู่ที่ไหนสักแห่งในตอนนี้มันเกิดขึ้นที่องค์ประกอบทริกเกอร์เหมือนกัน

8
00:00:42,960 --> 00:00:50,100
‫คอมโพเนนต์ทริกเกอร์เพื่อให้ทำงานได้อย่างถูกต้อง จำเป็นต้องมีการเข้าถึงคอมโพเนนต์ผู้เสนอญัตติ

9
00:00:50,460 --> 00:01:02,400
‫อย่างไรก็ตาม ในกรณีนี้จะยากขึ้นเล็กน้อย เพราะในกรณีของประตูลับของเรา ไกปืนและวัตถุที่กำลังเคลื่อนที่อยู่ในตัวแสดงคนเดียวกัน

10
00:01:02,730 --> 00:01:08,220
‫คุณจึงสามารถหาวัตถุได้โดยการหาองค์ประกอบของประเภทที่ตัวนักแสดง

11
00:01:08,220 --> 00:01:20,760
‫แต่ถ้าและเราจะมีสถานการณ์นี้ในสคริปต์ของฉันที่ฉันต้องการให้ทริกเกอร์ของฉันอยู่ในส่วนอื่นของห้องจากนักแสดงที่เคลื่อนไหวได้ดีเพื่อให้มีความยืดหยุ่นแบบนั้น

12
00:01:20,760 --> 00:01:26,940
‫เราต้องการให้ทริกเกอร์ไม่ต้องไปหาการพึ่งพาของตัวเอง

13
00:01:26,940 --> 00:01:30,330
‫และจริงๆ แล้วมีชื่อสำหรับแนวคิดของโปรแกรมประเภทนี้

14
00:01:30,330 --> 00:01:32,640
‫เรียกว่าการฉีดพึ่งพา

15
00:01:32,640 --> 00:01:37,680
‫โดยทั่วไปแล้ว ในกรณีที่เรามีบางอย่างที่บอกว่า ฉันต้องการวัตถุอื่น แต่ฉันหามันไม่เจอเอง

16
00:01:37,680 --> 00:01:40,230
‫หรือฉันไม่ต้องการค้นหามันด้วยตัวเอง

17
00:01:40,290 --> 00:01:50,850
‫และมักจะเหมาะสมที่จะไม่ปล่อยให้มันขึ้นอยู่กับวัตถุที่ทำงานของมันเอง ทำให้มีงานอื่นที่พยายามจะจับวัตถุ

18
00:01:51,300 --> 00:02:02,730
‫วิธีที่เราสามารถทำได้คือสร้างกลไกสำหรับพิมพ์เขียวเพื่อบอกองค์ประกอบทริกเกอร์ที่จะหาผู้เสนอญัตติ

19
00:02:02,910 --> 00:02:09,330
‫และวิธีที่เราจะทำคือการสร้างฟังก์ชันที่เรียกใช้พิมพ์เขียวได้บนคอมโพเนนต์ทริกเกอร์ของเรา

20
00:02:09,810 --> 00:02:11,220
‫ดังนั้นมันจะเป็นที่สาธารณะ

21
00:02:11,220 --> 00:02:16,980
‫เราจะใส่มันไว้ในส่วนสาธารณะภายใต้องค์ประกอบติ๊ก และมันจะเป็นฟังก์ชัน

22
00:02:16,980 --> 00:02:22,710
‫U เพื่อให้มันอยู่ในวงเล็บ พิมพ์เขียว callable ได้

23
00:02:23,280 --> 00:02:26,130
‫และไม่จำเป็นต้องมีฟังก์ชันนี้มากนัก

24
00:02:26,130 --> 00:02:33,330
‫มันจะเป็นโมฆะเพราะมันไม่ต้องการมันเพื่อส่งคืนสิ่งของ แต่มันจะถูกตั้งค่าผู้เสนอญัตติดังนั้นมันจะตั้งค่าลิงค์ไปยังผู้เสนอญัตติและเพื่อให้มันตั้งค่าลิงค์ไปยังผู้เสนอญัตติ

25
00:02:33,330 --> 00:02:43,620
‫ใช้ตัวชี้ไปยังองค์ประกอบผู้เสนอญัตติ

26
00:02:43,620 --> 00:02:52,440
‫มันจะเป็นดาวเด่นของคุณ และเราสามารถเรียกสิ่งนี้ว่าผู้เสนอญัตติเช่นนั้น และใส่เครื่องหมายอัฒภาคที่ท้ายบรรทัดนั้น

27
00:02:52,830 --> 00:02:55,350
‫และเราต้องเก็บสิ่งนี้ไว้ที่ไหนสักแห่ง

28
00:02:55,350 --> 00:02:57,300
‫เราจะสร้างตัวแปรส่วนตัวใหม่

29
00:02:57,300 --> 00:03:04,530
‫มันจะไม่เป็นคุณสมบัติใหม่และเป็นเพียงตัวชี้การย้าย U ซึ่งเราจะเรียกผู้เสนอญัตติเช่นกัน

30
00:03:04,560 --> 00:03:15,660
‫เช่นนั้นและสิ่งที่เราจะทำคือนำชุดตัวเสนอญัตติไปใช้ใน CPP เพื่อตั้งค่าการย้ายนี้เป็นตัวชี้ ซึ่งโดยค่าเริ่มต้นแล้วจะเป็นโมฆะ

31
00:03:16,050 --> 00:03:17,790
‫และเราต้องทำอีกอย่างหนึ่ง

32
00:03:17,790 --> 00:03:20,640
‫เราต้องรวมไฟล์ส่วนหัวสำหรับผู้เสนอญัตติของเรา

33
00:03:21,150 --> 00:03:26,370
‫ในกรณีนี้ เนื่องจากไฟล์ส่วนหัวอยู่ในโฟลเดอร์เดียวกับองค์ประกอบทริกเกอร์

34
00:03:26,370 --> 00:03:38,100
‫สิ่งที่เราต้องทำคือแฮชรวมถึงผู้เสนอญัตติ H และเพื่อให้แน่ใจว่าองค์ประกอบทริกเกอร์รับรู้ประเภทผู้เสนอญัตติ

35
00:03:38,280 --> 00:03:40,230
‫มาดูองค์ประกอบทริกเกอร์ของเรากัน

36
00:03:40,230 --> 00:03:46,530
‫CP และฉันจะใส่สิ่งนี้ไว้ใต้องค์ประกอบติ๊กที่เรากำลังจะปรับใช้ผู้เสนอญัตติ

37
00:03:46,530 --> 00:03:52,500
‫เราจะใส่คลาสที่คุณทริกเกอร์คอมโพเนนต์ก่อนและเยื้อง

38
00:03:53,400 --> 00:03:55,590
‫ลบอัฒภาคและเพิ่มวงเล็บปีกกา

39
00:03:55,590 --> 00:04:00,150
‫และโดยพื้นฐานแล้ว สิ่งที่เราต้องทำที่นี่ มาเปลี่ยนชื่อในไฟล์ C++ เท่านั้น

40
00:04:00,150 --> 00:04:06,060
‫ไม่สำคัญหรอกว่าชื่อของพารามิเตอร์จะตรงกันระหว่างส่วนหัวและ C++ หรือไม่

41
00:04:06,060 --> 00:04:12,540
‫ดังนั้นเราจึงสามารถเปลี่ยนแปลงได้ที่นี่ และบอกว่าผู้เสนอญัตติใหม่คือสิ่งที่กำลังจะเข้ามาเพื่อกำหนดผู้เสนอญัตติ

42
00:04:12,630 --> 00:04:20,010
‫ดังนั้นเราจึงสามารถตั้งค่าตัวแปรโลคัลของเราได้ คลาสตัวแปรผู้เสนอญัตติของเราเท่ากับผู้เสนอญัตติใหม่เช่น

43
00:04:20,010 --> 00:04:27,030
‫ดังนั้นตอนนี้จึงค่อนข้างสำคัญจริงๆ ที่คุณจะไม่ข้ามขั้นตอนการเปลี่ยนชื่อนี้ เพราะหากพารามิเตอร์อินพุตเป็นชื่อเดียวกับตัวแปรตัวใดตัวหนึ่งในคลาส

44
00:04:27,030 --> 00:04:34,170
‫แล้ว unreal โดยค่าเริ่มต้นจะตั้งค่าให้เป็นข้อผิดพลาด

45
00:04:34,170 --> 00:04:39,720
‫มันเรียกว่าแชโดว์และ Unreal ไม่ต้องการให้คุณทำ ดังนั้นคุณต้องแน่ใจว่าชื่อพารามิเตอร์ของคุณแตกต่างจากตัวแปรในตอนนี้

46
00:04:39,720 --> 00:04:46,260
‫เนื่องจากฟังก์ชันใหม่เหล่านี้ไม่ได้ปรากฏขึ้นพร้อมกับการเปลี่ยนแปลงโค้ดแบบสดเสมอไป

47
00:04:46,260 --> 00:04:52,920
‫ฉันจะปิดตัวแก้ไขคอมไพล์ใหม่จากโค้ด Visual Studio แล้วเปิดใหม่จากโครงการใหม่

48
00:04:52,950 --> 00:04:58,950
‫ตอนนี้ ไปที่ลิ้นชักเนื้อหา เปิดพิมพ์เขียวกำแพงลับของเรา จากนั้นจากโหนด

49
00:04:58,950 --> 00:05:06,080
‫Begin Play ในกราฟเหตุการณ์ ออกจากที่นี่แล้วค้นหาผู้เสนอญัตติชุด

50
00:05:06,090 --> 00:05:08,190
‫ตอนนี้สังเกตว่ามีสองตัวเลือกที่นี่

51
00:05:08,190 --> 00:05:15,750
‫หนึ่ง จะเป็นการตั้งค่าส่วนประกอบที่เรียกว่าผู้เสนอญัตติ และอีกอันคือฟังก์ชันบนส่วนประกอบทริกเกอร์

52
00:05:15,750 --> 00:05:18,840
‫ดังนั้นเราจึงต้องการเลือกฟังก์ชันที่เป็นองค์ประกอบทริกเกอร์

53
00:05:19,050 --> 00:05:28,110
‫แล้วสิ่งที่เราต้องการทำคือลากในองค์ประกอบผู้เสนอญัตติของเราเป็นอาร์กิวเมนต์อื่น ๆ ของฟังก์ชันนี้และนั่นควรทำเคล็ดลับ

54
00:05:28,110 --> 00:05:31,350
‫มันตั้งค่าผู้เสนอญัตติที่เริ่มเล่น

55
00:05:31,350 --> 00:05:41,400
‫ดังนั้นตอนนี้โดยพื้นฐานแล้วสิ่งที่เราต้องการให้เกิดขึ้นคือองค์ประกอบทริกเกอร์ของเราควรตั้งค่าและตั้งค่าควรย้ายบูลีนมาที่นี่

56
00:05:41,400 --> 00:05:46,110
‫นั่นเป็นความท้าทายของฉันสำหรับคุณในการสร้างฟังก์ชั่นสาธารณะในผู้เสนอญัตติและผู้เสนอญัตติ

57
00:05:46,110 --> 00:05:51,780
‫CP ควรตั้งค่าควรย้ายและควรอัปเดตตัวแปรคุณสมบัติของคุณ

58
00:05:51,780 --> 00:05:56,970
‫อันที่จริง คุณสามารถทำให้มันไม่ใช่คุณสมบัติใหม่ได้อีกต่อไปเพราะเราจะตั้งค่าผ่านโค้ดในตอนนี้

59
00:05:56,970 --> 00:05:59,760
‫จากนั้นคุณสามารถใส่ไว้ในส่วนสาธารณะได้

60
00:05:59,760 --> 00:06:04,740
‫จำเป็นต้องเปิดเผยต่อสาธารณะเพราะเราจะพยายามเข้าถึงจากองค์ประกอบทริกเกอร์ของเรา

61
00:06:04,740 --> 00:06:11,850
‫และคุณสามารถเรียกมันว่าตัวชี้ผู้เสนอญัตติที่เรามีในองค์ประกอบทริกเกอร์จากการตั้งค่าองค์ประกอบติ๊ก

62
00:06:11,850 --> 00:06:18,960
‫บูลีนที่เหมาะสม ไม่ว่าเราต้องการให้ปลดล็อกหรือล็อคอีกครั้ง หยุดวิดีโอชั่วคราวแล้วเริ่มเลย

63
00:06:22,250 --> 00:06:23,690
‫โอเค ยินดีต้อนรับกลับ

64
00:06:23,690 --> 00:06:29,410
‫ดังนั้นฉันจะลบคุณสมบัติออกจากควรจะย้าย ฉันจะไปที่ส่วนสาธารณะภายใต้องค์ประกอบ

65
00:06:29,420 --> 00:06:43,010
‫TTIC และฉันจะสร้างชุดโมฆะควรย้ายโดยใช้บูลีนที่เรากำลังจะเรียก เคลื่อนไหวเช่นนั้น

66
00:06:43,280 --> 00:06:51,560
‫จากนั้นเราจะนำสิ่งนี้ไปที่ move CP และใช้มัน แทนที่เครื่องหมายอัฒภาค เพิ่มใน

67
00:06:51,560 --> 00:07:00,920
‫you move ทวิภาค คลาสโคลอน แล้วโดยพื้นฐานอีกครั้ง เราสามารถเรียกสิ่งนี้ว่า new should

68
00:07:00,920 --> 00:07:08,030
‫move และเราสามารถพูดได้ว่า ควรย้ายเท่ากับใหม่ควรย้าย

69
00:07:08,030 --> 00:07:14,660
‫ตอนนี้ คุณอาจสงสัยว่า ทำไมเราไม่สร้างตัวแปรให้เข้าถึงแบบสาธารณะเพื่อที่เราจะตั้งค่าเหล่านั้นได้โดยตรง

70
00:07:14,780 --> 00:07:24,620
‫นั่นไม่ใช่แนวปฏิบัติที่ดีในภาษา C++ เพราะถ้าคุณปล่อยให้ใครคนหนึ่งเปลี่ยนตัวแปรของคุณ คุณจะไม่มีทางรู้ได้เลยว่าจะเกิดอะไรขึ้นกับพวกเขา

71
00:07:24,620 --> 00:07:32,090
‫แม้ว่าคุณจะมีเมธอดที่จะทำแทนคุณ มันจะให้คุณเปลี่ยนวิธีจัดโครงสร้างตัวแปรภายในได้ในภายหลังโดยไม่ต้องเปลี่ยนฟังก์ชันสาธารณะของคุณ

72
00:07:32,090 --> 00:07:39,920
‫ซึ่งหมายความว่ามีการอัปเดตสำหรับคลาสต่างๆ ที่คุณต้องทำน้อยลง

73
00:07:39,920 --> 00:07:46,850
‫โดยทั่วไปแล้ว เราใช้ setters และ getters เสมอ หากเราต้องการเข้าถึงตัวแปรในคลาสอื่น

74
00:07:46,850 --> 00:07:53,570
‫ตอนนี้เราได้สร้างฟังก์ชันใหม่แล้ว ไปที่ CP องค์ประกอบตรีโกณมิติ ซึ่งเราได้รับข้อความบันทึกอยู่ในขณะนี้

75
00:07:53,570 --> 00:08:01,670
‫สิ่งที่เราต้องทำคือเข้าถึงตัวชี้ผู้เสนอญัตติ ดังนั้นเราจะทำชุดลูกศรผู้เสนอญัตติควรย้าย

76
00:08:01,670 --> 00:08:06,140
‫และในกรณีที่เรามีนักแสดงที่ยอมรับได้ นั่นควรเป็นความจริง

77
00:08:06,140 --> 00:08:08,600
‫เราควรย้ายอัฒภาคที่ท้ายบรรทัด

78
00:08:08,690 --> 00:08:12,200
‫และในกรณีอื่น เราก็ไม่ควร

79
00:08:12,200 --> 00:08:20,510
‫ดังนั้นเราจะย้ายชุดลูกศรควรย้ายและในวงเล็บใส่ false ลบ R พิเศษที่ฉันมีที่ส่วนท้ายของเมธอดและลองคอมไพล์ใหม่ในกรณีนี้เพราะฉันได้เพิ่มฟังก์ชันนี้ใน

80
00:08:20,510 --> 00:08:30,020
‫C ++ land และ มันไม่ใช่พิมพ์เขียวที่เรียกได้

81
00:08:30,020 --> 00:08:34,940
‫ฉันไม่คิดว่าฉันต้องรีสตาร์ทตัวแก้ไขเพื่อให้ฟังก์ชันนี้ทำงาน ปิดบันทึกผลลัพธ์

82
00:08:34,940 --> 00:08:39,530
‫ไปที่การ์กอยล์ของเราแล้วเริ่มเล่นและหยิบมันขึ้นมา

83
00:08:39,770 --> 00:08:49,400
‫ออกจากกรงนี้แล้วติดไว้ที่ซุ้มแล้วพวกมันก็ไป มันเลื่อนลงมา แต่จะหยุดทันทีที่กากอยหลุดออกมา

84
00:08:49,400 --> 00:08:56,600
‫ซึ่งไม่เหมาะเพราะกอบลินไม่ได้ยึดอยู่กับที่จริงๆ และผนังไม่ได้

85
00:08:56,600 --> 00:08:59,060
‫ลงเต็มที่

86
00:08:59,150 --> 00:09:03,020
‫และเนื่องจากเป็นการจำลองฟิสิกส์ มันจึงจะโผล่ออกมาจากซุ้มนั้น ใช่ไหม?

87
00:09:03,020 --> 00:09:11,780
‫ดังนั้นสิ่งที่เราต้องทำคือต้องแน่ใจว่าเมื่อเราวางมันลงในพื้นที่ทริกเกอร์ของเราแล้ว มันได้รับการแก้ไขในนั้นและยังคงอยู่

88
00:09:11,780 --> 00:09:14,210
‫มันจะเป็นหัวข้อของการบรรยายต่อไป

89
00:09:14,210 --> 00:09:15,200
‫ฉันจะไปพบคุณที่นั่น.

