﻿1
00:00:04,750 --> 00:00:05,980
‫สวัสดีและยินดีต้อนรับ.

2
00:00:05,980 --> 00:00:12,010
‫ในการบรรยายนี้ เราจะเรียนรู้เกี่ยวกับวิธีที่เราสามารถดึงเอาท์พุตออกจากฟังก์ชันใน C++

3
00:00:12,010 --> 00:00:19,870
‫และเราจะใช้สิ่งนี้เพื่อลดความซับซ้อนของโค้ดของเราอย่างมาก และเริ่มใช้งาน pseudocode บางส่วนที่เราได้เขียนไว้

4
00:00:19,870 --> 00:00:20,800
‫มาดำดิ่งกัน

5
00:00:20,980 --> 00:00:26,350
‫ดังนั้น ก่อนที่เราจะพยายามทำความเข้าใจค่าที่ส่งคืนจากฟังก์ชัน เรามาทำอ้อมสั้น ๆ และทำความเข้าใจมันเสียก่อน

6
00:00:26,350 --> 00:00:29,290
‫สองแนวคิดที่นี่เพิ่มแนวคิดอีกสองแนวคิดในอภิธานศัพท์ของเรา

7
00:00:29,590 --> 00:00:37,060
‫อันแรกคือนิพจน์และนิพจน์เป็นส่วนของโค้ดที่สร้างค่า

8
00:00:37,060 --> 00:00:43,180
‫และมีคำสั่งที่เป็นส่วนของโค้ดที่เป็นการกระทำที่ต้องทำ

9
00:00:43,570 --> 00:00:51,130
‫ตอนนี้ทั้งสองมีความสัมพันธ์กันโดยแท้จริงแล้วนิพจน์มักจะเป็นคำสั่งในการคำนวณค่าของส่วนย่อยของโค้ด

10
00:00:51,130 --> 00:00:57,100
‫คุณต้องมีการดำเนินการก่อน

11
00:00:57,100 --> 00:01:01,030
‫แต่สิ่งเดียวกันนี้ไม่จำเป็นต้องเป็นจริงเสมอไป

12
00:01:01,030 --> 00:01:04,780
‫คำสั่งไม่ได้ให้คุณค่ากับคุณเสมอไป

13
00:01:04,840 --> 00:01:10,960
‫ลองมาดูตัวอย่างนิพจน์และบางสิ่งที่ไม่ได้มาจากโค้ดที่เราเขียนไปแล้วกัน

14
00:01:11,170 --> 00:01:22,510
‫เมื่อเราพิมพ์ vector ของฉันลงใน C++ นี่คือนิพจน์เพราะมันมีค่าของสิ่งที่เก็บไว้ในตัวแปรเวกเตอร์ของฉัน

15
00:01:22,510 --> 00:01:24,730
‫เช่นเดียวกับเวกเตอร์ท้องถิ่น

16
00:01:24,730 --> 00:01:32,950
‫และที่จริงแล้วถ้าคุณมีเวกเตอร์โลคัลบวก z, ตัวมันเองคือนิพจน์และเวกเตอร์โลคัลดอท

17
00:01:32,950 --> 00:01:33,850
‫z บวก 100

18
00:01:33,850 --> 00:01:41,620
‫ตัวมันเองก็เป็นนิพจน์เช่นกัน เพราะเวกเตอร์โลคัล z ให้ค่าภายในสมาชิก Z แก่คุณ

19
00:01:41,620 --> 00:01:46,960
‫และเมื่อคุณบวก 100 ก็จะได้ค่าใหม่ที่บวก 100

20
00:01:46,960 --> 00:01:48,700
‫นี่จึงเป็นนิพจน์ทั้งหมด

21
00:01:48,940 --> 00:01:55,360
‫อย่างไรก็ตาม สิ่งที่ไม่ใช่นิพจน์คือเมื่อเราประกาศเวกเตอร์โลคัล และเราบอกว่าเวกเตอร์ F, เวกเตอร์โลคัลเท่ากับเวกเตอร์ของฉัน

22
00:01:55,360 --> 00:01:58,870
‫และใส่เครื่องหมายอัฒภาคที่ท้ายบรรทัด

23
00:01:58,870 --> 00:02:01,000
‫เราไม่สามารถใช้สิ่งนั้นเพื่อรับค่าได้

24
00:02:01,000 --> 00:02:02,590
‫ที่นั่นไม่มีค่า

25
00:02:02,590 --> 00:02:06,370
‫เป็นเพียงการบอก C++ ว่านี่คือการดำเนินการสำหรับคุณ

26
00:02:06,370 --> 00:02:09,310
‫ฉันต้องการให้คุณสร้างเวกเตอร์ท้องถิ่นใหม่

27
00:02:09,310 --> 00:02:11,980
‫นั่นจึงไม่ใช่การแสดงออก

28
00:02:12,310 --> 00:02:17,020
‫อย่างไรก็ตาม สิ่งที่เป็นการแสดงออกถึงตำแหน่งนักแสดง

29
00:02:17,020 --> 00:02:20,950
‫เป็นฟังก์ชันที่เรากำลังเรียกใช้เพราะมีวงเล็บอยู่ท้ายนี้

30
00:02:20,950 --> 00:02:22,720
‫ที่จริงเราไม่มีข้อโต้แย้งใด ๆ ที่นี่

31
00:02:22,720 --> 00:02:26,290
‫นี่เป็นรายการอาร์กิวเมนต์ที่ว่างเปล่า แต่กำลังเรียกอะไรบางอย่าง

32
00:02:26,290 --> 00:02:37,810
‫และเนื่องจากฟังก์ชันนี้มีค่าส่งคืน โค้ดจริงในที่นี้คือนิพจน์ที่ใช้ค่าของสิ่งที่ส่งคืนจากฟังก์ชัน

33
00:02:37,810 --> 00:02:44,350
‫และโดยพื้นฐานแล้วจะเหมือนกับพินเอาต์พุตที่เราเคยเห็นใน Blueprint ก่อนหน้านี้

34
00:02:44,350 --> 00:02:50,800
‫ยกเว้นว่าไม่เหมือนกับ Blueprint คุณสามารถมีค่าเอาต์พุตได้เพียงค่าเดียวจากฟังก์ชัน

35
00:02:50,800 --> 00:02:52,600
‫มีค่าส่งคืนเพียงค่าเดียว

36
00:02:52,600 --> 00:02:59,830
‫นั่นคือสิ่งที่เราสามารถใช้ตรงนี้ได้ โดยที่เราได้เขียนโค้ดเทียมที่ระบุว่า Get current location

37
00:02:59,830 --> 00:03:02,440
‫นั่นคือที่ที่เราจะทำอย่างนั้น

38
00:03:02,440 --> 00:03:08,410
‫เรากำลังจะได้รับตำแหน่งโดยใช้ตำแหน่งที่ได้รับของเรา

39
00:03:08,410 --> 00:03:11,320
‫มาสร้างตัวแปรโลคัลใหม่กันที่นี่

40
00:03:11,320 --> 00:03:14,650
‫เราจะมีตัวแปรโลคัลใหม่ชื่อ F ของเวกเตอร์ประเภท F

41
00:03:14,650 --> 00:03:20,350
‫จะต้องเป็นเวกเตอร์ประเภท F เพราะนั่นคือประเภทที่ส่งคืนจากตำแหน่งที่แอ็คทีฟ

42
00:03:20,440 --> 00:03:29,470
‫และเราจะเรียกตำแหน่งปัจจุบันนี้ และเราจะตั้งค่าให้เท่ากับผลลัพธ์ หรือนิพจน์ รับตำแหน่งนักแสดง

43
00:03:29,470 --> 00:03:37,540
‫แล้วใส่วงเล็บชุดของวงเล็บที่ตรงกัน แล้วตามด้วยเครื่องหมายอัฒภาคเพื่อสิ้นสุดบรรทัด

44
00:03:37,540 --> 00:03:44,020
‫ดังนั้นถ้าเราแยกบรรทัดนี้หน่อย เราจะเห็นว่าส่วนนี้ตรงนี้ รับตำแหน่งนักแสดง

45
00:03:44,020 --> 00:03:49,990
‫และวงเล็บคือนิพจน์ ได้ค่ามา ซึ่งก็คือตำแหน่งปัจจุบันของนักแสดง

46
00:03:50,290 --> 00:03:57,040
‫จากนั้น เรากำลังดำเนินการมอบหมายไปยังตำแหน่งปัจจุบัน ซึ่งกำลังประกาศอยู่ที่นี่ด้วย

47
00:03:57,040 --> 00:04:00,550
‫ดังนั้นในบรรทัดนี้ ทั้งบรรทัดนี้จึงไม่ใช่นิพจน์

48
00:04:00,550 --> 00:04:03,220
‫ไม่มีค่าอะไรจากมัน มันเป็นคำสั่ง

49
00:04:03,220 --> 00:04:09,880
‫และโดยปกติคุณสามารถบอกคำสั่งได้เพราะใน C++ จะลงท้ายด้วยอัฒภาค

50
00:04:09,880 --> 00:04:16,780
‫โอเค นี่โดยพื้นฐานแล้วจะทำให้เราเลิกใช้เวกเตอร์และเวกเตอร์ในท้องที่ที่เราใช้ก่อนหน้านี้ได้

51
00:04:16,780 --> 00:04:23,650
‫เพราะเราควรจะสามารถอัปเดตตัวแปรท้องถิ่นของเราที่นี่ ตำแหน่งปัจจุบันที่เราได้รับจาก

52
00:04:23,650 --> 00:04:29,470
‫ตำแหน่งของนักแสดงของเรา

53
00:04:29,470 --> 00:04:34,390
‫สิ่งที่เราจะทำต่อไปคือข้างล่างนี้ เรามีความคิดเห็นว่า ตั้งค่าตำแหน่ง

54
00:04:34,390 --> 00:04:51,460
‫ดังนั้นหลังจากบรรทัดความคิดเห็นนั้น ฉันจะทำ set Actor location โดยใช้นิพจน์ตำแหน่งปัจจุบัน ซึ่งก็แค่ใช้ค่าตัวแปรนั้นแล้วใส่เครื่องหมายอัฒภาคที่ท้ายบรรทัดเพื่อบอกว่าทั้งหมดนี้เป็นคำสั่ง

55
00:04:51,460 --> 00:05:04,120
‫เราต้องการให้มันดำเนินการตามที่ตั้งไว้และสังเกตว่าฉันในขณะที่ความคิดเห็นของฉันถูกเยื้อง ฉันได้ตัดสินใจที่จะไม่เยื้องรหัสเพื่อให้ตรงกันเพราะโดยปกติเราต้องการ

56
00:05:04,630 --> 00:05:09,130
‫รหัสให้อยู่ในระดับหนึ่งของการเยื้องภายในฟังก์ชัน

57
00:05:09,670 --> 00:05:15,490
‫ตอนนี้สิ่งที่ฉันทำได้คือ ฉันสามารถลบโค้ดทั้งหมดที่เรามีก่อนหน้านี้ ทุกอย่างเกี่ยวกับเวกเตอร์ในเครื่อง

58
00:05:15,490 --> 00:05:18,430
‫เวกเตอร์ของฉันตั้งค่าตำแหน่งโดยใช้เวกเตอร์ในพื้นที่

59
00:05:18,430 --> 00:05:23,830
‫ฉันสามารถลบทั้งหมดนั้นเพื่อให้ทั้งหมดที่เรามีตอนนี้คือเนื้อหารอบๆ ความคิดเห็นของเรา

60
00:05:24,040 --> 00:05:27,100
‫และฉันจะเข้าไปที่ไฟล์ส่วนหัวและทำความสะอาดที่นี่ด้วย

61
00:05:27,100 --> 00:05:31,420
‫เราไม่ต้องการเวกเตอร์ของฉันอีกต่อไป เราไม่ต้องการคุณสมบัติใหม่ x ของฉันอีกต่อไป

62
00:05:31,420 --> 00:05:34,440
‫ดังนั้นฉันจะลบสิ่งเหล่านี้ด้วย

63
00:05:34,450 --> 00:05:40,000
‫เห็นได้ชัดว่า CP ของแพลตฟอร์มที่กำลังเคลื่อนที่ไม่ได้ทำอะไรมากนักเพราะเราได้รับตำแหน่งที่ใช้งานอยู่ในปัจจุบัน

64
00:05:40,000 --> 00:05:44,680
‫จากนั้นเราตั้งค่าใหม่อีกครั้ง ซึ่งโดยพื้นฐานแล้วไม่มีผลกระทบ

65
00:05:44,680 --> 00:05:52,870
‫ฉันอยากให้คุณลองอัปเดตตำแหน่งปัจจุบันของแพลตฟอร์มที่กำลังเคลื่อนที่ในฟังก์ชันติ๊กนั้น

66
00:05:52,990 --> 00:05:56,530
‫ดังนั้นใช้สมาชิก X หรือ Y ตามที่เห็นสมควร

67
00:05:56,530 --> 00:06:08,770
‫X หนึ่งตัวจะย้ายคุณไปข้างหน้า Y จะย้ายคุณไปทางขวา จากนั้นคุณสามารถเพิ่มและกำหนดกลับเข้าสู่สมาชิกตามที่เราทำก่อนหน้านี้เพื่ออัปเดตตำแหน่งแพลตฟอร์มที่กำลังเคลื่อนที่ของเรา

68
00:06:08,770 --> 00:06:15,940
‫ดังนั้นให้เพิ่มหนึ่งหรือสองโดยขึ้นอยู่กับความเร็วที่คุณต้องการให้แพลตฟอร์มเคลื่อนที่ จากนั้นจึงย้ายแพลตฟอร์มไปยังตำแหน่งเริ่มต้น

69
00:06:15,940 --> 00:06:23,920
‫เพราะตอนนี้เราไม่มีตัวแปรสมาชิกนั้นเพื่อบอกตำแหน่งเริ่มต้น ที่จริงแล้วเราใช้ตำแหน่งปัจจุบัน

70
00:06:23,920 --> 00:06:28,960
‫ดังนั้นไม่ว่าคุณจะวางแพลตฟอร์มนั้นไว้ที่ใด นั่นเป็นจุดเริ่มต้นของแพลตฟอร์ม

71
00:06:29,200 --> 00:06:35,380
‫จากนั้นฉันอยากให้คุณคอมไพล์และทดสอบโค้ดของคุณ และดูว่าโค้ดมีการเคลื่อนไหวหรือไม่ อย่างที่คุณคาดไว้

72
00:06:35,410 --> 00:06:37,240
‫หยุดวิดีโอชั่วคราวและไปกันเลย

73
00:06:40,030 --> 00:06:40,360
‫ตกลง.

74
00:06:40,360 --> 00:06:41,240
‫ยินดีต้อนรับกลับ.

75
00:06:41,260 --> 00:06:49,210
‫ดังนั้นเราจะวางโค้ดบรรทัดนี้ไว้ใต้ความคิดเห็นที่พูดถึงมัน แล้วเพิ่มเวกเตอร์ไปที่ตำแหน่งนั้น

76
00:06:49,600 --> 00:06:52,900
‫และเหตุผลที่เราใส่มันที่นี่ก็เพราะคำสั่ง

77
00:06:52,900 --> 00:06:56,830
‫เราต้องการรับตำแหน่งปัจจุบัน อัปเดตแล้วตั้งค่า

78
00:06:56,860 --> 00:06:59,710
‫เราไม่ต้องการให้อะไรผิดปกติเกิดขึ้นที่นั่น

79
00:07:00,070 --> 00:07:04,790
‫หากเราต้องอัปเดตก่อนที่เราจะสร้างตัวแปร ตัวแปรนั้นจะไม่มีอยู่จริง

80
00:07:04,810 --> 00:07:06,490
‫จำไว้ว่ามันเป็นตัวแปรท้องถิ่น

81
00:07:06,520 --> 00:07:11,110
‫จะมีอยู่ก็ต่อเมื่อเราสร้างมันขึ้นมาในการเรียกใช้ฟังก์ชันนี้โดยเฉพาะ

82
00:07:11,110 --> 00:07:20,210
‫และถ้าเราทำหลังจากกำหนดตำแหน่งนักแสดงอีกครั้ง การปรับเปลี่ยนนั้นก็จะหลุดออกไปเมื่อเราไปถึงวงเล็บปีกกาในฟังก์ชัน

83
00:07:20,260 --> 00:07:29,410
‫เราจะกำหนดตำแหน่งปัจจุบัน ดอท x ฉันจะใช้เท่ากับตำแหน่งปัจจุบัน ดอท x บวกหนึ่ง

84
00:07:29,410 --> 00:07:34,180
‫แล้วใส่เครื่องหมายอัฒภาคที่ท้ายบรรทัด

85
00:07:34,180 --> 00:07:40,180
‫และเราจะกลับไปที่ Unreal และเราจะกดปุ่มคอมไพล์

86
00:07:40,180 --> 00:07:45,640
‫และอย่างที่ฉันบอกไป ตอนนี้เราต้องย้ายแท่นเคลื่อนที่นี้ไปยังตำแหน่งเริ่มต้น

87
00:07:45,640 --> 00:07:51,490
‫ดังนั้นฉันจะคลิกที่ตัวละครบุคคลที่สามของเรา และฉันจะคัดลอกตำแหน่งของเขาโดยคลิกขวาที่ตำแหน่งนั้น แล้วกดคัดลอก

88
00:07:51,490 --> 00:07:56,770
‫จากนั้นไปที่แพลตฟอร์มที่กำลังเคลื่อนที่ของเรา คลิกขวาที่ตำแหน่งนั้น แล้วกดวาง

89
00:07:56,770 --> 00:08:01,510
‫นั่นทำให้แพลตฟอร์มอยู่ในเครื่องเล่นของเรา ซึ่งไม่ใช่สิ่งที่เราต้องการจริงๆ

90
00:08:01,510 --> 00:08:09,790
‫ผมจะเลื่อนมันออกไปทางขวาของตัวเล่นเล็กน้อย และดูว่ามันอยู่ในความสูงที่เหมาะสมหรือไม่

91
00:08:09,790 --> 00:08:15,400
‫ฉันคิดว่าฉันจะทำให้มันต่ำลงเล็กน้อย ซึ่งเป็นหนึ่งในข้อดีของการใช้ตำแหน่งปัจจุบันมากกว่าตัวแปรตำแหน่ง

92
00:08:15,400 --> 00:08:20,560
‫คือการที่ฉันสามารถเห็นได้ว่าแพลตฟอร์มนี้จะเป็นอย่างไรในโลก

93
00:08:20,800 --> 00:08:31,510
‫ดังนั้นตอนนี้ ถ้าฉันไปข้างหน้าและตีเล่น คุณจะเห็นว่าแพลตฟอร์มเคลื่อนที่ไปในทิศทาง X อย่างสวยงาม และฉันก็ยังสามารถกระโดดขึ้นไปบนนั้นและเคลื่อนที่ไปพร้อมกับมันได้

94
00:08:31,510 --> 00:08:32,450
‫สิ่งที่ดี

95
00:08:32,470 --> 00:08:36,490
‫ตอนนี้เราได้เรียนรู้ว่าค่าที่ส่งกลับทำงานอย่างไรจากฟังก์ชันต่างๆ

96
00:08:36,490 --> 00:08:43,160
‫เราเริ่มเข้าใจแนวคิดมากมายจากพิมพ์เขียวในโลก C++

97
00:08:43,180 --> 00:08:44,890
‫เจอกันใหม่ตอนหน้าค่ะ

