﻿1
00:00:04,400 --> 00:00:05,720
‫สวัสดีและยินดีต้อนรับ.

2
00:00:05,720 --> 00:00:11,870
‫ในการบรรยายนี้ เราจะดูเวกเตอร์และโดยทั่วไปแล้วจะซับซ้อนกว่า เช่น โครงสร้างใน

3
00:00:11,870 --> 00:00:19,810
‫C++ และวิธีที่เราสามารถเข้าถึงแต่ละส่วนของทั้งสองชุดและรับส่วนเหล่านั้นจากโครงสร้าง

4
00:00:19,820 --> 00:00:20,720
‫มาดำน้ำกันเถอะ

5
00:00:21,260 --> 00:00:29,870
‫ดังนั้นเราจึงได้เรียนรู้วิธีจัดการกับประเภทข้อมูลพื้นฐานใน C++ และสร้างตัวแปรและกำหนดให้กับพวกมัน หรือแม้แต่คำนวณพื้นฐานบางอย่างกับพวกมัน

6
00:00:29,870 --> 00:00:35,570
‫แต่ถ้าเราต้องการจัดการกับประเภทที่ซับซ้อนกว่านี้ เช่น เวกเตอร์และการแปลงล่ะ

7
00:00:35,840 --> 00:00:38,090
‫กระบวนการนี้คล้ายกันมากจริงๆ

8
00:00:38,090 --> 00:00:41,630
‫เริ่มต้นด้วยการล้างรหัสทดสอบที่เรามีอยู่แล้ว

9
00:00:41,630 --> 00:00:43,580
‫ฉันจะลบคุณสมบัติทั้งหมดของฉัน

10
00:00:43,580 --> 00:00:46,700
‫สำหรับฉันนั่นคือบรรทัดที่ 26 ลงไปที่ 51

11
00:00:46,940 --> 00:00:56,900
‫และฉันจะไปที่ไฟล์ C++ และลบบรรทัดที่ 19 ถึง 23 ซึ่งเป็นที่ที่ฉันทำงานทั้งหมดกับตัวแปรที่ฉันเพิ่งลบไป

12
00:00:56,900 --> 00:01:01,760
‫ตอนนี้ Begin Play ว่างเปล่าทั้งหมด และเรากลับไปที่ตารางแรก

13
00:01:02,570 --> 00:01:06,350
‫ตอนนี้สิ่งที่ฉันต้องการจะทำคือเพิ่มคุณสมบัติใหม่ของคุณ

14
00:01:06,350 --> 00:01:16,010
‫ดังนั้นตัวพิมพ์ใหญ่ทั้งหมดจะแก้ไขที่ไหนก็ได้ และฉันจะให้เวกเตอร์ F ชนิดนี้สังเกตเห็นตัวพิมพ์ใหญ่ F ตัวพิมพ์ใหญ่ V ตัวพิมพ์ใหญ่

15
00:01:16,010 --> 00:01:22,190
‫และนี่คือวิธีที่เราจัดการกับเวกเตอร์ที่เราจัดการในพิมพ์เขียว

16
00:01:22,190 --> 00:01:27,470
‫พวกมันเป็นเวกเตอร์เดียวกันภายใต้พื้นผิว แต่นี่คือวิธีที่เราพิมพ์มันใน C++

17
00:01:27,470 --> 00:01:37,010
‫F ที่นำหน้ามันทำให้เรารู้ว่านี่คือโครงสร้างในลักษณะเดียวกับ A ที่ดำเนินการกับแพลตฟอร์มที่เคลื่อนไหวทำให้เรารู้ว่านั่นคือนักแสดง

18
00:01:37,010 --> 00:01:38,390
‫นั่นไม่ใช่สิ่ง C ++

19
00:01:38,390 --> 00:01:44,240
‫นั่นคือหลักการตั้งชื่อที่ไม่เป็นจริงสำหรับการตั้งชื่อคลาส โครงสร้าง และประเภทที่แตกต่างกัน

20
00:01:44,630 --> 00:01:49,400
‫สิ่งที่เราจะทำคือตั้งชื่อตัวแปรนี้ และมันทำงานเหมือนกับว่ามันเป็น

21
00:01:49,400 --> 00:01:51,080
‫float หรือ int

22
00:01:51,080 --> 00:01:53,600
‫เราสามารถเรียกมันว่าโฟลตของฉันได้ตัวอย่างเช่น

23
00:01:53,600 --> 00:01:55,010
‫มันต้องไม่มีช่องว่าง

24
00:01:55,160 --> 00:01:59,120
‫และถ้าเราใส่เครื่องหมายอัฒภาคต่อท้ายบรรทัดตรงนี้ ก็เท่านั้น

25
00:01:59,120 --> 00:02:07,100
‫เราได้ประกาศตัวแปรใหม่ที่จะมองเห็นได้ในบานหน้าต่างรายละเอียดของเราในเครื่องมือแก้ไข แต่นั่นไม่เพียงพอสำหรับฉัน

26
00:02:07,100 --> 00:02:14,030
‫ฉันต้องการให้ค่าเริ่มต้นนี้แตกต่างจากค่าเริ่มต้น 000

27
00:02:14,150 --> 00:02:17,690
‫ในการทำเช่นนั้น เราต้องอัปเดตอภิธานศัพท์ของเราด้วยคำศัพท์ใหม่

28
00:02:17,690 --> 00:02:25,070
‫เราต้องการคอนสตรัคเตอร์ ซึ่งโดยพื้นฐานแล้วก็คือบางอย่างใน C++ ที่สร้างโครงสร้างหรือค่าคลาสใหม่

29
00:02:25,160 --> 00:02:34,700
‫ดังนั้นถ้าเราจะสร้างคอนสตรัคเตอร์สำหรับเวกเตอร์ วิธีนี้จะได้ผลก็คือ เราต้องการกำหนดค่าให้เท่ากัน

30
00:02:34,700 --> 00:02:41,330
‫และโดยปกติเมื่อเราจัดการกับจำนวนเต็มหรือทศนิยม เราสามารถใช้บางอย่างเช่นหนึ่งหรือเป็นจริง

31
00:02:41,330 --> 00:02:46,280
‫มีค่าในตัวที่ช่วยให้เราสามารถตั้งค่าประเภทพื้นฐานเหล่านั้นได้

32
00:02:46,280 --> 00:02:56,240
‫แต่เมื่อเรามีประเภทที่ซับซ้อนมากขึ้นเช่น struct เราจำเป็นต้องใช้ตัวสร้างและตัวสร้างจะมีชื่อเดียวกันกับประเภทข้อมูลเสมอ

33
00:02:56,240 --> 00:03:02,660
‫มันจะเป็นเวกเตอร์ f สะกดเหมือนกันทุกประการ แล้วคุณเปิดวงเล็บและภายในวงเล็บ

34
00:03:02,660 --> 00:03:05,930
‫คุณให้ค่าที่คุณต้องการ

35
00:03:05,930 --> 00:03:08,600
‫ดังนั้น X, Y และ Z คือสิ่งที่ประกอบกันเป็นเวกเตอร์

36
00:03:08,600 --> 00:03:17,000
‫เราจึงคั่นด้วยเครื่องหมายจุลภาคได้หนึ่ง สอง และสาม จากนั้นเราก็ปิดวงเล็บและใส่เครื่องหมายอัฒภาคที่ท้ายบรรทัด

37
00:03:17,000 --> 00:03:23,480
‫และนั่นจะให้ค่าเริ่มต้นหนึ่ง สอง และสามใน X, Y และ Z สำหรับเวกเตอร์นี้

38
00:03:23,480 --> 00:03:24,590
‫มาลองดูกัน

39
00:03:24,740 --> 00:03:27,470
‫กลับไปที่ Unreal แล้วกดปุ่มคอมไพล์

40
00:03:27,560 --> 00:03:34,550
‫และเมื่อทำสำเร็จแล้ว เราก็สามารถตรวจสอบได้ว่าเราได้เลือกนักแสดงแพลตฟอร์มเคลื่อนที่ในค่าผิดปกติของเราแล้ว

41
00:03:34,550 --> 00:03:40,730
‫และดูที่แผงรายละเอียดและดูว่าจริง ๆ แล้วเรามีคุณสมบัติใหม่ที่เรียกว่า My Float

42
00:03:40,730 --> 00:03:47,510
‫ค่าอื่นๆ ถูกนำออกไปแล้ว และค่าในตำแหน่งต่างๆ ของ X, Y และ Z คือ 1, 2 และ

43
00:03:47,510 --> 00:03:49,700
‫3 ตามที่เราคาดไว้

44
00:03:50,090 --> 00:03:51,170
‫ดีมาก

45
00:03:51,170 --> 00:03:57,680
‫แต่ถ้าฉันต้องการรับค่าเหล่านี้และติดมันไว้ในคุณสมบัติอื่นล่ะ?

46
00:03:57,680 --> 00:04:04,250
‫ดังนั้นหากฉันต้องมีคุณสมบัติอื่นที่ถูกทำเครื่องหมายเป็นแก้ไขที่ใดก็ได้เพื่อให้เราสามารถเห็นมันในตัวตรวจสอบประเภท

47
00:04:04,550 --> 00:04:13,160
‫float ที่เรียกว่า x ของฉันและเราจะตั้งค่าเริ่มต้นเป็นศูนย์เพียงเพื่อที่เราจะได้เห็นว่าเรากำลังเปลี่ยนมัน

48
00:04:13,640 --> 00:04:20,750
‫และสิ่งที่ฉันต้องการทำคือจับค่า x จากโฟลตของฉันในการเริ่มเล่น และฉันต้องการตั้งค่ามันในตัวแปร

49
00:04:20,750 --> 00:04:22,370
‫x ของฉัน

50
00:04:22,460 --> 00:04:29,450
‫ไปที่ไฟล์ C++ แล้วเริ่มเล่นตามบรรทัดที่เขียนว่า ใหญ่มาก เราจะตั้งค่า x ให้เท่ากับสิ่งที่เราต้องการได้บางอย่างจากเวกเตอร์

51
00:04:30,020 --> 00:04:38,600
‫แต่เราไม่ต้องการ เวกเตอร์ทั้งหมดของฉัน

52
00:04:38,600 --> 00:04:39,860
‫นั่นจะเป็นข้อผิดพลาด

53
00:04:39,860 --> 00:04:44,780
‫เราไม่สามารถตั้งค่าเวกเตอร์ให้เป็นทศนิยมได้ เราแค่ต้องการส่วน x ของเวกเตอร์นั้น

54
00:04:44,930 --> 00:04:48,740
‫เพื่อให้เข้าใจว่า เราต้องเข้าใจแนวคิดของโอเปอเรเตอร์

55
00:04:48,770 --> 00:04:53,090
‫ตัวดำเนินการเป็นสัญลักษณ์ใน C ++ ที่ทำบางสิ่ง

56
00:04:53,090 --> 00:04:54,590
‫เราเคยเห็นมาบ้างแล้ว

57
00:04:54,590 --> 00:04:57,950
‫เราได้เห็นตัวดำเนินการบวก ซึ่งรวมสองสิ่งเข้าด้วยกัน

58
00:04:57,950 --> 00:04:59,510
‫มีตัวดำเนินการลบด้วย

59
00:04:59,510 --> 00:05:03,770
‫มีตัวดำเนินการความเท่าเทียมกัน ตัวดำเนินการเท่ากับ ซึ่งกำหนด

60
00:05:03,980 --> 00:05:04,310
‫สิ่งของ.

61
00:05:04,310 --> 00:05:06,740
‫เราใช้นี่ตรงนี้ในบรรทัดที่ 19

62
00:05:06,740 --> 00:05:12,020
‫นั่นคือโอเปอเรเตอร์ที่กำหนดค่าเวกเตอร์ของฉันให้กับ X ของฉัน

63
00:05:12,230 --> 00:05:18,850
‫แล้วเราก็มีโอเปอเรเตอร์อีกตัวหนึ่ง ซึ่งเราต้องรู้ว่าอันไหนคือตัวดำเนินการ DOT

64
00:05:18,860 --> 00:05:23,360
‫เป็นโอเปอเรเตอร์ที่ได้รับบางสิ่งจากภายในโครงสร้างหรือคลาส

65
00:05:23,360 --> 00:05:27,260
‫เราอยากได้ X จากภายในเวกเตอร์

66
00:05:27,260 --> 00:05:34,040
‫เราใช้ตัวดำเนินการจุด เราทำ dot x ตอนนี้ เราไม่ใช้ช่องว่างระหว่างเวกเตอร์กับ x ตรงนี้

67
00:05:34,040 --> 00:05:42,200
‫เราปล่อยให้สิ่งเหล่านี้ทำงานด้วยกัน ตามปกติแล้วเราจะทิ้งสิ่งต่างๆ ไว้ แม้ว่าจะไม่จำเป็นต้องเป็นข้อผิดพลาดในการวางช่องว่างก็ตาม

68
00:05:42,200 --> 00:05:51,560
‫เรามีเวกเตอร์ x ของฉันควรได้ค่า x ของเวกเตอร์แล้วใส่ลงใน x float

69
00:05:51,560 --> 00:06:00,530
‫ดังนั้นเราจึงใส่เครื่องหมายอัฒภาคที่ท้ายบรรทัด และตามปกติแล้ว ฉันไม่สนใจเครื่องหมายยัติภังค์สีแดง เพราะบางครั้งอาจใช้เวลานานในการอัปเดตและบางครั้งก็ไม่ถูกต้อง

70
00:06:00,650 --> 00:06:08,630
‫จากนั้นเราจะเข้าสู่การเขียนโค้ดแบบสดและกดปุ่มที่คอมไพล์ใหม่ และตรวจสอบว่าเราได้ผลลัพธ์ที่สำเร็จหรือไม่

71
00:06:08,630 --> 00:06:11,120
‫และคุณเห็นไหม เรามีความล้มเหลวในการสร้าง

72
00:06:11,120 --> 00:06:17,390
‫และถ้าคุณดูที่ข้อผิดพลาด มันบอกว่าเวกเตอร์ของฉันเป็นตัวระบุที่ไม่ได้ประกาศ และนั่นเป็นเพราะฉันพิมพ์ผิด

73
00:06:17,390 --> 00:06:26,180
‫ฉันเรียกเวกเตอร์ F ว่าลอยของฉัน และคุณอาจจะกรีดร้องที่หน้าจอของคุณ แต่เป็นการดีที่จะแสดงให้คุณเห็นว่าแม้แต่โปรแกรมเมอร์ที่มีประสบการณ์ก็ยังทำผิดพลาดได้

74
00:06:26,180 --> 00:06:30,890
‫เราต้องการเรียกมันว่าเวกเตอร์ของฉัน ดังนั้นฉันจะกลับไปที่ไฟล์ส่วนหัว

75
00:06:30,890 --> 00:06:35,720
‫และเปลี่ยนชื่อเป็นเวกเตอร์ ซึ่งน่าจะขจัดปัญหาที่เกิดขึ้นในสมองของฉัน

76
00:06:35,720 --> 00:06:38,900
‫ไปข้างหน้าและคลิกปุ่มคอมไพล์อีกครั้ง

77
00:06:38,900 --> 00:06:44,180
‫และนั่นจะทำให้คุณได้รู้ว่ามันเป็นอย่างไรเมื่อคุณทำผิดพลาด คุณจะได้รับข้อผิดพลาดในการรวบรวม

78
00:06:44,180 --> 00:06:45,280
‫มันเกิดขึ้นตลอดเวลา

79
00:06:45,300 --> 00:06:48,290
‫อันที่จริง หายากมากที่จะไม่ทำผิดพลาด

80
00:06:48,290 --> 00:06:56,300
‫ครั้งแรกที่คุณทำอะไรบางอย่าง เราจะไปต่อและกดเล่น และดูว่าเราได้ค่าอะไรในบานหน้าต่างรายละเอียด

81
00:06:56,300 --> 00:07:05,990
‫คุณสามารถเห็นได้ว่า x ของฉันถูกตั้งค่าเป็นหนึ่งเพราะนั่นคือค่าในองค์ประกอบ x ของตัวแปรเวกเตอร์ของฉัน

82
00:07:06,080 --> 00:07:09,800
‫ผมอยากท้าให้คุณตั้งค่าเวกเตอร์

83
00:07:09,830 --> 00:07:11,930
‫เราได้รับค่าจากเวกเตอร์แล้ว

84
00:07:11,930 --> 00:07:13,070
‫ทีนี้มาลองตั้งค่ากัน

85
00:07:13,070 --> 00:07:17,240
‫โดยทั่วไปลองใช้ตัวดำเนินการจุดเพื่อตั้งค่า

86
00:07:17,480 --> 00:07:27,050
‫ลองพลิกสองด้านของมันให้เท่ากัน เพื่อให้เรามี X ของฉันอยู่ทางขวา และเวกเตอร์ของฉันอยู่ทางซ้ายแทน

87
00:07:27,050 --> 00:07:30,500
‫แล้วถ้าเปลี่ยนเป็น Y หรือ Z ล่ะ?

88
00:07:30,530 --> 00:07:32,090
‫มีความแตกต่างกันหรือไม่?

89
00:07:32,120 --> 00:07:33,500
‫หยุดวิดีโอชั่วคราวและไปกันเลย

90
00:07:36,830 --> 00:07:37,430
‫ตกลง.

91
00:07:37,430 --> 00:07:37,940
‫ยินดีต้อนรับกลับ.

92
00:07:37,940 --> 00:07:40,640
‫ผมจะลองพลิกสองตัวนี้ดู

93
00:07:40,640 --> 00:07:52,910
‫ลองไปที่ C++ และใน Begin Play แทน สิ่งที่ผมจะพูดคือเวกเตอร์ ดอท y เท่ากับ x ของผม แล้วใส่เครื่องหมายอัฒภาคที่ท้ายบรรทัด

94
00:07:52,910 --> 00:07:57,770
‫และนี่คือวิธีที่เราสามารถตั้งค่าภายใน struct ได้เช่นกัน

95
00:07:57,770 --> 00:08:06,890
‫กลับไปที่ Unreal แล้วคอมไพล์ใหม่ จากนั้นเราก็ไปตั้งค่าบางอย่างใน X ของฉัน

96
00:08:06,890 --> 00:08:08,960
‫ผมจะใส่ค่าของ 5 ตรงนี้

97
00:08:10,010 --> 00:08:15,650
‫จากนั้นฉันจะไปเล่นและดูรายละเอียดของแพลตฟอร์มที่กำลังเคลื่อนที่

98
00:08:15,650 --> 00:08:24,620
‫และแน่นอนว่า ค่า y ของเวกเตอร์ของฉัน ถูกอัพเดตในการเริ่มเล่นด้วยค่าใน x ของฉัน

99
00:08:24,740 --> 00:08:26,060
‫ขอแสดงความยินดีด้วย

100
00:08:26,060 --> 00:08:33,080
‫เราได้เห็นวิธีการใช้ประเภทที่ซับซ้อนมากขึ้นที่เป็นประเภทผสมเช่น struct ใน C ++

101
00:08:33,080 --> 00:08:34,910
‫แล้วพบกันใหม่ในบทเรียนหน้าครับ

