﻿1
00:00:03,980 --> 00:00:05,210
‫สวัสดีและยินดีต้อนรับ.

2
00:00:05,210 --> 00:00:17,870
‫ในการบรรยายนี้ เราจะนำพิมพ์เขียวที่ยุ่งเหยิงของเรามาจัดระเบียบและจัดระเบียบให้เป็นหน้าที่ต่างๆ เพื่อให้เราสามารถอ่านและทำความเข้าใจสิ่งที่เกิดขึ้นในกราฟกิจกรรมพิมพ์เขียวของเราได้อย่างง่ายดาย

3
00:00:17,870 --> 00:00:19,850
‫มาดูวิธีทำกันเลยดีกว่า

4
00:00:20,600 --> 00:00:26,030
‫ทีนี้ ถ้าเราย่อกราฟเหตุการณ์ เราจะเห็นว่ากราฟเริ่มมีเสียงดังมาก

5
00:00:26,030 --> 00:00:28,610
‫ฉันยังเห็นโหนดสองสามโหนดที่ไม่ได้เชื่อมต่อกับอะไรเลย

6
00:00:28,610 --> 00:00:34,340
‫มี get node ที่ฉันกำลังจะลบ สินทรัพย์ โหนด M0 แต่คุณสามารถเห็นได้ว่ามันดังมาก

7
00:00:34,340 --> 00:00:36,860
‫มันเริ่มยากที่จะเข้าใจว่าเกิดอะไรขึ้นที่นี่

8
00:00:36,860 --> 00:00:46,010
‫ทีนี้ วิธีแก้ปัญหาทั่วไปที่ผู้คนทำก็คือ บล็อกของโหนดนี้ เกี่ยวกับการวางไข่ของโพรเจกไทล์

9
00:00:46,010 --> 00:00:47,300
‫ดังนั้นฉันจึงสามารถเลือกสิ่งเหล่านี้ได้

10
00:00:47,300 --> 00:00:54,080
‫ฉันสามารถกดปุ่ม C ได้และมันจะวางบล็อกไว้รอบ ๆ สิ่งนี้เรียกว่าบล็อกความคิดเห็น

11
00:00:54,080 --> 00:01:02,360
‫จากนั้นฉันก็สามารถพิมพ์ spawn projectile ได้ และนั่นทำให้ฉันรู้ว่าบล็อกของโค้ดนั้นกำลังทำอะไรอยู่

12
00:01:02,360 --> 00:01:05,410
‫นั่นเป็นวิธีหนึ่งในการจัดระเบียบโค้ดของคุณอย่างแน่นอน

13
00:01:05,420 --> 00:01:12,680
‫อย่างไรก็ตาม ในความคิดของฉัน มันไม่ใช่วิธีที่ดีที่สุด และเรามีเครื่องมือที่ดีกว่าสำหรับการทำงานที่เรียกว่าฟังก์ชันนี้

14
00:01:12,680 --> 00:01:14,420
‫แล้วหน้าที่คืออะไร?

15
00:01:14,780 --> 00:01:20,510
‫ฟังก์ชั่นดำเนินการบล็อกของพิมพ์เขียวและทำให้เกมของเราทำสิ่งต่างๆ

16
00:01:20,510 --> 00:01:25,310
‫โหนดจำนวนมากที่ให้บริการโดย Unreal Real นั้นใช้งานได้จริงแล้ว

17
00:01:25,310 --> 00:01:27,380
‫เราจึงได้เจอสิ่งเหล่านี้

18
00:01:27,380 --> 00:01:33,170
‫เมื่อคุณไปและซูมเข้า พูดบนโหนดโพรเจกไทล์ของนักแสดงวางไข่ นั่นคือฟังก์ชัน

19
00:01:33,170 --> 00:01:39,410
‫เมื่อเราดูที่การเพิ่มแรงกระตุ้น นั่นคือฟังก์ชันของโหนดเหล่านี้เกือบทุกโหนด แม้กระทั่งสิ่งต่างๆ เช่น

20
00:01:39,410 --> 00:01:44,090
‫get forward active vector ที่ไม่มีพินการดำเนินการและไม่ใช่สีน้ำเงิน ก็เป็นฟังก์ชันที่คุณบอกได้เพราะมันมี

21
00:01:44,090 --> 00:01:52,370
‫สัญลักษณ์ f เล็ก ๆ ที่ด้านบนซ้ายซึ่งหมายถึงฟังก์ชัน แต่เราไม่ได้จำกัดเฉพาะฟังก์ชันที่ Unreal มีให้

22
00:01:52,370 --> 00:01:56,150
‫เราสามารถสร้างฟังก์ชันของเราเองได้เช่นกัน และทำได้ง่ายมาก

23
00:01:56,150 --> 00:01:57,050
‫ในพิมพ์เขียว

24
00:01:57,050 --> 00:02:02,630
‫พวกเขาช่วยให้เราจัดระเบียบและอนุญาตให้เรานำบล็อกของรหัสกลับมาใช้ใหม่ได้

25
00:02:02,630 --> 00:02:06,500
‫นั่นดีกว่าความคิดเห็นเพราะความคิดเห็นที่คุณต้องคัดลอกและวาง

26
00:02:06,500 --> 00:02:12,620
‫ในขณะที่ฟังก์ชั่นช่วยให้เราสามารถแบ่งปันรหัสหนึ่งบล็อกระหว่างสถานที่ใช้งานหลายแห่ง

27
00:02:12,620 --> 00:02:19,280
‫มาดูกันว่าเราจะเปลี่ยนสิ่งนี้ให้กลายเป็นบล็อกของโค้ดได้อย่างไร

28
00:02:19,610 --> 00:02:24,620
‫อย่างแรก เราสามารถลบบล็อกความคิดเห็นได้ เพราะฉันคิดว่ามันไม่จำเป็น

29
00:02:24,620 --> 00:02:35,180
‫ฉันจะเลือกโหนดทั้งหมดจาก get player แทน - เพื่อเพิ่มแรงกระตุ้น คลิกขวาที่โหนดและเลือกยุบเพื่อให้ทำงาน

30
00:02:35,360 --> 00:02:42,920
‫และนั่นสร้างบล็อกใหม่และแทนที่โหนดก่อนหน้าทั้งหมดที่มีมาก่อน

31
00:02:42,920 --> 00:02:46,520
‫ตอนนี้ฉันจะตั้งชื่อฟังก์ชันนี้ให้คุณเห็นได้ในบานหน้าต่างด้านซ้ายมือ

32
00:02:46,520 --> 00:02:53,870
‫มันสร้างฟังก์ชันใหม่ภายใต้ส่วนฟังก์ชันในบานหน้าต่างพิมพ์เขียวของฉัน และได้รับเลือกให้ฉันเปลี่ยนชื่อโดยอัตโนมัติ

33
00:02:53,870 --> 00:03:02,120
‫เพราะเราควรเปลี่ยนชื่อฟังก์ชันเหล่านี้อย่างแน่นอน และฉันจะเรียกมันว่าโปรเจกไทล์วางไข่

34
00:03:02,120 --> 00:03:09,530
‫และการตั้งชื่อที่ดีนั้นมีความสำคัญอย่างยิ่งในโปรแกรม เพราะโค้ดนั้นสำคัญไฉนเกี่ยวกับการสื่อสาร

35
00:03:09,530 --> 00:03:14,750
‫เรากำลังพยายามสื่อสารกับตัวเองเพื่อให้เราเข้าใจสิ่งที่เราเขียน

36
00:03:14,750 --> 00:03:17,210
‫เรากำลังพยายามสื่อสารกับตัวเองในอนาคต

37
00:03:17,210 --> 00:03:21,050
‫เมื่อเรากลับมาที่โครงการนี้ ลืมไปว่าเหตุใดเราจึงเขียนแบบใดแบบหนึ่ง

38
00:03:21,050 --> 00:03:25,310
‫และเมื่อคุณทำงานเป็นทีม คุณกำลังพยายามสื่อสารกับคนอื่นๆ ในทีมของคุณด้วย

39
00:03:25,340 --> 00:03:31,130
‫บางคนบอกว่าตัววัดที่ดีสำหรับคุณภาพของโค้ดคือสิ่งที่มีค่าต่อนาที

40
00:03:31,130 --> 00:03:36,500
‫ดังนั้น หากคุณกำลังอ่านโค้ดชิ้นหนึ่งและคุณกำลังจะเกิดอะไรขึ้น ห่า 50 ครั้งต่อนาที นั่นเป็นโค้ดที่ค่อนข้างแย่

41
00:03:36,500 --> 00:03:44,930
‫ถ้าคุณอ่านมันและไปเท่านั้น อะไรวะ ครั้งหรือสองครั้งต่อนาที ถ้าอย่างนั้น นั่นอาจเป็นรหัสที่ดีและคุณจะได้รับเลขฐานสิบหกเสมอ

42
00:03:44,930 --> 00:03:49,220
‫เราก็แค่พยายามลดจำนวนหน้าที่ของมันลง

43
00:03:49,220 --> 00:03:51,650
‫ที่สำคัญ เรามักจะตั้งชื่อฟังก์ชันเป็นกริยา

44
00:03:51,650 --> 00:03:59,270
‫มีข้อยกเว้นบางประการสำหรับกฎนี้ที่เราจะพูดถึงในภายหลัง แต่หน้าที่ส่วนใหญ่คือสิ่งที่กำลังทำอะไรบางอย่าง

45
00:03:59,270 --> 00:04:06,230
‫เราเลยใช้คำศัพท์และถ้าคุณไม่แน่ใจว่าจะตั้งชื่อฟังก์ชันนี้อย่างไร ถ้าทำงานเป็นทีม

46
00:04:06,230 --> 00:04:11,420
‫คุณก็แค่คุยกับคนอื่นแล้วถามพวกเขาว่าควรตั้งชื่ออะไรดี และประเภทอะไร

47
00:04:11,420 --> 00:04:14,060
‫มีเหตุผลสำหรับพวกเขา

48
00:04:14,060 --> 00:04:19,760
‫คุณมักจะพบว่าคุณจมอยู่กับปัญหาจนคิดไม่ออกว่าจะพูดถึงมันอย่างไร

49
00:04:19,760 --> 00:04:26,450
‫คุณอาจจะถามตัวเองว่า โค้ดทั้งหมดของฉันหายไปไหนตอนที่ฉันสร้างฟังก์ชัน spawn projectile

50
00:04:26,450 --> 00:04:27,170
‫นี้?

51
00:04:27,320 --> 00:04:34,610
‫คุณสามารถกลับไปดูรายละเอียดว่าฟังก์ชันนี้ใช้งานจริงได้อย่างไรโดยดับเบิลคลิกในกราฟเหตุการณ์หรือคลิกบนแท็บ

52
00:04:34,610 --> 00:04:41,840
‫My Blueprints หรือดับเบิลคลิกบนแท็บ My Blueprints

53
00:04:41,840 --> 00:04:48,950
‫และคุณจะเห็นว่าเรามีโหนดทั้งหมดของเราที่ยังคงอยู่ที่นี่ ตอนนี้พวกมันอยู่ในแท็บที่แยกจากกัน ดังนั้นคุณสามารถกลับไปที่แท็บกราฟเหตุการณ์ของคุณ

54
00:04:48,950 --> 00:04:57,980
‫หรือคุณสามารถดำดิ่งไปที่แท็บ Spawn Projectile ซึ่งแสดงเพียงอันเดียว การทำงาน.

55
00:04:58,610 --> 00:05:05,480
‫และคุณจะเห็นว่ามีโหนดใหม่ที่นี่ โหนดสีม่วงเล็กๆ นี้ ซึ่งเป็นจุดเข้าสู่ฟังก์ชันของเรา

56
00:05:05,480 --> 00:05:09,800
‫สิ่งนี้บอกว่านี่คือสิ่งที่เราควรทำเมื่อฟังก์ชันเริ่มทำงาน

57
00:05:09,800 --> 00:05:11,180
‫มันเป็นเพียงจุดเริ่มต้น

58
00:05:11,180 --> 00:05:17,690
‫และเมื่อใดก็ตามที่มันถูกเรียก โหนดนั้นจะทริกเกอร์และทริกเกอร์โหนดที่เหลือทั้งหมดภายในฟังก์ชันของเรา

59
00:05:17,690 --> 00:05:19,820
‫กลับไปที่กราฟเหตุการณ์และ

60
00:05:19,960 --> 00:05:23,190
‫ซูมออก อาจนำโหนดของเรามารวมกันเล็กน้อย

61
00:05:23,200 --> 00:05:26,850
‫ตอนนี้เราได้ทำให้กราฟโหนดเล็กลงและอ่านง่ายขึ้นมากแล้ว

62
00:05:26,860 --> 00:05:33,760
‫ฉันคิดว่ามีผู้สมัครอีกสองสามคนที่นี่สำหรับเราที่จะดึงฟังก์ชันและแทนที่สิ่งต่างๆ

63
00:05:33,940 --> 00:05:38,380
‫หนึ่งในนั้นคือที่ที่เรากำลังพิมพ์กระสุน

64
00:05:38,380 --> 00:05:43,780
‫ในกรณีนี้ การพิมพ์กระสุนเป็นสิ่งที่เราทำในสองแห่ง

65
00:05:43,780 --> 00:05:47,800
‫เราทำมันในการเริ่มเล่นและเราทำมันลงในกระสุนปืนวางไข่

66
00:05:48,190 --> 00:05:54,190
‫และอีกที่หนึ่ง อีกอย่าง ชิ้นส่วนของฟังก์ชันที่เราแยกออกมาเป็นฟังก์ชันได้

67
00:05:54,190 --> 00:06:01,200
‫ก็คือที่ที่เราลดกระสุนที่สามารถใส่ลงในฟังก์ชันลดกระสุนแทนได้

68
00:06:01,210 --> 00:06:09,640
‫ดังนั้น ก่อนที่ฉันจะตั้งความท้าทายให้คุณ ฉันต้องการลบโหนดการแปลงและโหนดสตริงการพิมพ์ที่ส่วนหลังของโพรเจกไทล์วางไข่

69
00:06:09,640 --> 00:06:15,280
‫เพราะสิ่งนี้จะทำให้เรื่องยุ่งยาก

70
00:06:15,280 --> 00:06:21,370
‫ฉันต้องการคัดลอกฟังก์ชันจากด้านบนเพื่อให้ทั้งสองมีลักษณะเหมือนกันทุกประการ

71
00:06:21,370 --> 00:06:29,200
‫ดังนั้น หากเราคัดลอกโหนดทั้งสามจาก Begin Play แล้ววางลงด้านล่างและเชื่อมต่อพินการดำเนินการ คุณจะเห็นว่าเรามีโหนดชุดเดียวกันทุกประการที่นี่

72
00:06:29,200 --> 00:06:39,970
‫มีการทำงานเหมือนกันระหว่างทั้งสอง และไม่มีความสับสนเมื่อ เรามาแยกสิ่งนี้ออกเป็นฟังก์ชัน

73
00:06:39,970 --> 00:06:43,240
‫ดังนั้นฉันจึงขอท้าให้คุณสร้างฟังก์ชันเพิ่มเติม

74
00:06:43,240 --> 00:06:47,140
‫อย่างแรกที่ฉันอยากจะแนะนำคือการลดกระสุน

75
00:06:47,140 --> 00:06:52,720
‫ดังนั้นการนำสามโหนดที่เกี่ยวข้องกับการลดกระสุน แยกส่วนเหล่านั้นออกเป็นฟังก์ชันและตั้งชื่อให้กับพวกมัน

76
00:06:52,960 --> 00:06:56,020
‫แล้วอันที่สองคือกระสุนพิมพ์

77
00:06:56,020 --> 00:07:05,740
‫ดังนั้นคุณจะต้องแยกฟังก์ชันของการรับ แปลง และพิมพ์กระสุนเป็นฟังก์ชันเดียว

78
00:07:05,740 --> 00:07:11,500
‫และเนื่องจากเรามีไซต์สองแห่งที่เรากำลังพิมพ์กระสุน คุณอาจต้องการลบหนึ่งในนั้นและนำฟังก์ชันเข้ามาแทน

79
00:07:11,500 --> 00:07:17,020
‫ซึ่งคุณสามารถทำได้โดยการลากจากบานหน้าต่างพิมพ์เขียวของฉัน

80
00:07:17,260 --> 00:07:22,750
‫และสุดท้าย เราก็ได้ข้อความต้อนรับสองสามข้อความ เอาต์พุตของโหนดข้อความต้อนรับ

81
00:07:22,750 --> 00:07:24,820
‫คุณสามารถแยกสิ่งเหล่านั้นออกเป็นงานพิมพ์

82
00:07:24,820 --> 00:07:27,070
‫ฟังก์ชั่นข้อความต้อนรับเช่นกัน

83
00:07:27,100 --> 00:07:29,170
‫หยุดวิดีโอชั่วคราวและไปกันเลย

84
00:07:32,230 --> 00:07:32,740
‫ตกลง.

85
00:07:32,740 --> 00:07:33,570
‫ยินดีต้อนรับกลับ.

86
00:07:33,580 --> 00:07:37,450
‫เราจะแยกกระสุนลดก่อน

87
00:07:37,450 --> 00:07:39,640
‫มีสามโหนดที่เกี่ยวข้องในนั้น

88
00:07:39,640 --> 00:07:47,740
‫เราจะคลิกขวายุบฟังก์ชัน จากนั้นเราจะเรียกว่า Decrease Ammo ซึ่งค่อนข้างตรงไปตรงมา

89
00:07:47,740 --> 00:07:51,940
‫ดังนั้น วางไข่กระสุนปืน ลดกระสุน จากนั้นเราจะพิมพ์กระสุน

90
00:07:51,940 --> 00:07:58,210
‫ลองใช้สามโหนด รับการแปลงและพิมพ์สตริง และเราจะคลิกขวายุบเพื่อทำงาน

91
00:07:58,210 --> 00:08:02,020
‫และเรียกกระสุนพิมพ์หนึ่งอัน

92
00:08:02,470 --> 00:08:08,590
‫อย่างที่ฉันบอกไป เรามีฟังก์ชันนี้ซ้ำในสองแห่ง ดังนั้นเราจะลบตำแหน่งที่มันทำงานนี้ในการเริ่มเล่น

93
00:08:08,590 --> 00:08:16,180
‫และเพียงแค่ลากกระสุนพิมพ์จากรายการฟังก์ชันของเรา และเชื่อมต่อพินการดำเนินการเพื่อให้มันทำงานตามหลังเรา

94
00:08:16,180 --> 00:08:19,840
‫พิมพ์สตริง

95
00:08:20,200 --> 00:08:25,630
‫ซึ่งนำฉันไปสู่ฟังก์ชันสุดท้ายที่ฉันต้องการสร้าง ซึ่งเราบอกว่าเราจะเรียกพิมพ์ข้อความต้อนรับ

96
00:08:25,630 --> 00:08:34,390
‫ดังนั้นฉันจะเลือกเพื่อพิมพ์สตริงหลังจากอยู่ในการเล่นยุบเพื่อทำงานและเรียกมันว่าพิมพ์ข้อความต้อนรับ

97
00:08:34,390 --> 00:08:43,200
‫และโหนดนี้ ตอนนี้เราสามารถจัดเรียงโหนดทั้งหมดของเราใหม่เพื่อให้อ่านข้อมูลทั้งหมดนี้ได้ง่ายขึ้นในหน้าจอเดียวแบบเต็ม

98
00:08:43,210 --> 00:08:49,960
‫คุณจะเห็นได้ว่าการทำความเข้าใจฟังก์ชันการทำงานของเกมของเรานั้นง่ายขึ้นมากในขณะนี้ เพราะมันเข้ากันได้ดีกับหน้าจอเดียว

99
00:08:49,960 --> 00:08:56,380
‫และถูกนำมาสู่ระดับนามธรรมและความเข้าใจที่ใกล้เคียงกัน

100
00:08:56,380 --> 00:09:04,900
‫และนี่คือสิ่งที่เรียกว่า self documenting code เพราะเป็นโค้ดที่ไม่ต้องการข้อคิดเห็นหรือเอกสารประกอบเพื่ออธิบายว่ามันทำอะไร

101
00:09:04,900 --> 00:09:07,150
‫มันอ่านเหมือนภาษาอังกฤษ

102
00:09:07,270 --> 00:09:08,110
‫สิ่งที่ดี

103
00:09:08,110 --> 00:09:10,120
‫เจอกันใหม่ตอนหน้าค่ะ

