﻿1
00:00:04,350 --> 00:00:04,980
‫สวัสดีและยินดีต้อนรับ.

2
00:00:04,980 --> 00:00:13,110
‫ในการบรรยายนี้ เราจะวางไข่ปืนไรเฟิลของเราที่รันไทม์จากคลาสตัวละครของเราในภาษา C++

3
00:00:13,110 --> 00:00:15,270
‫มาดูวิธีทำกันเลยดีกว่า

4
00:00:16,560 --> 00:00:16,740
‫ตกลง.

5
00:00:16,830 --> 00:00:27,390
‫ดังนั้นเราจึงต้องการให้ปืนของเราวางไข่ในฐานะลูกของตัวละครมือปืน ประเด็นแรกคือการสามารถวางไข่นักแสดงคนนั้นจากภายในนักแสดงคนอื่น

6
00:00:27,870 --> 00:00:29,160
‫เราจะทำสิ่งนี้ตอนรันไทม์

7
00:00:29,160 --> 00:00:32,340
‫เราจะเริ่มเล่นกันก่อนเพราะนั่นคือวิธีที่คุณต้องทำ

8
00:00:32,340 --> 00:00:34,440
‫เมื่อคุณวางไข่นักแสดง คุณต้องทำตอนรันไทม์

9
00:00:34,620 --> 00:00:38,430
‫และวิธีที่เราจะทำสิ่งนี้คือ เราจะยึดครองโลกก่อน

10
00:00:38,430 --> 00:00:44,820
‫รับโลกแล้วเราจะเรียกใช้ฟังก์ชันเกี่ยวกับ get world โดยวิธี world และระดับคำพ้องความหมาย

11
00:00:44,820 --> 00:00:48,810
‫สิ่งที่เราทำจริง ๆ ที่นี่คือเรากำลังขึ้นสู่ระดับและพูดว่า เฮ้ ระดับ คุณสร้างในฐานะนักแสดงได้ไหม

12
00:00:48,810 --> 00:00:54,210
‫เพราะนักแสดงทุกคนล้วนเป็นส่วนหนึ่งหรือมีชีวิตอยู่ในระดับหนึ่ง

13
00:00:54,690 --> 00:00:58,500
‫ถ้าอย่างนั้นเรากำลังบอกว่า ได้โปรดวางไข่นักแสดงให้ฉันด้วย

14
00:00:58,830 --> 00:01:04,830
‫และนี่คือตัวแสดงวางไข่ที่ใช้แม่แบบ

15
00:01:04,830 --> 00:01:10,530
‫คุณสามารถพูดได้ว่าฉันต้องการนักแสดงที่ฉันจะวางไข่เป็นปืนประเภท A

16
00:01:10,530 --> 00:01:19,680
‫และเพื่อให้ใช้งานได้ เราจำเป็นต้องมีการรวมแฮชบนนี้ สำหรับปืนดอท h

17
00:01:21,240 --> 00:01:29,760
‫จากนั้นเราจะทำการโต้แย้งและอาร์กิวเมนต์ที่จะวางไข่นั้นแท้จริงแล้วสามารถเป็นประเภทคลาสได้

18
00:01:29,760 --> 00:01:33,780
‫ดังนั้นโดยค่าเริ่มต้น มันจะไปข้างหน้าและวางไข่ใน C++

19
00:01:33,780 --> 00:01:38,190
‫แต่ที่นี่เราต้องการวางไข่ลูกพิมพ์เขียวของปืนนี้

20
00:01:38,190 --> 00:01:43,590
‫ดังนั้นเราจึงต้องคิดให้ออกว่ามันคืออะไรที่จะต้องเชื่อมต่อกับพิมพ์เขียว

21
00:01:43,590 --> 00:01:46,110
‫ไม่สามารถเชื่อมต่อได้ที่นี่ใน C ++ อย่างน้อยก็ไม่ง่าย

22
00:01:46,110 --> 00:01:48,330
‫สถานที่ที่ดีที่สุดที่จะทำคือในพิมพ์เขียว

23
00:01:48,330 --> 00:01:52,380
‫ดังนั้นเราจะทำ alt oh เพื่อไปที่ไฟล์ส่วนหัวสำหรับปัญหาของเรากับตัวละคร

24
00:01:52,860 --> 00:01:55,620
‫และเราจะเพิ่มคุณสมบัติใหม่ของคุณที่นี่

25
00:01:56,390 --> 00:02:03,470
‫เพื่อให้เราสามารถกำหนดค่าคลาสที่เราควรจะชี้ไปเพื่อวางไข่นักแสดง

26
00:02:03,470 --> 00:02:07,010
‫คลาสพิมพ์เขียวใดที่เราควรวางไข่จากตัวละครนักแม่นปืนคนนี้

27
00:02:07,370 --> 00:02:22,490
‫เราจะให้มันเป็นค่าเริ่มต้นในการแก้ไขเท่านั้น y แก้ไขค่าเริ่มต้นเท่านั้นเพราะเราไม่ต้องการที่จะสามารถแก้ไขได้ในขณะใช้งานจริงเพราะมันจะทำให้เข้าใจผิดว่าคุณสามารถเปลี่ยนประเภทของปืนที่เราใช้

28
00:02:22,490 --> 00:02:23,840
‫รันไทม์

29
00:02:23,840 --> 00:02:30,710
‫ในขณะที่ Begin Play ถูกเรียกแล้วว่าปืนนั้นได้กำเนิดขึ้นแล้ว ดังนั้นมันจึงไม่ได้อัปเดตอะไรเลยจริงๆ

30
00:02:30,710 --> 00:02:35,090
‫ดังนั้นเราจึงไม่ต้องการทำให้มันสามารถแก้ไขได้ เพื่อไม่ให้ผู้คนเข้าใจผิดเกี่ยวกับสิ่งที่สามารถทำได้

31
00:02:35,450 --> 00:02:41,810
‫จากนั้นเราจะใช้แมโครที่เรียกว่าคลาสย่อย T ซึ่งคุณอาจหรือไม่เคยพบเจอมาก่อน

32
00:02:41,810 --> 00:02:45,230
‫และคลาสย่อย DT ของเป็นเทมเพลต

33
00:02:45,230 --> 00:02:52,520
‫เราใช้วงเล็บมุมเหล่านี้อีกครั้งและเราต้องการให้มันเป็นคลาสย่อยของปืน

34
00:02:52,790 --> 00:02:59,630
‫และโดยพื้นฐานแล้วสิ่งนี้หมายความว่ามันทำให้ Blueprint จำกัดคลาสที่เราสามารถเลือกจากคลาสที่เป็นคลาสย่อยของคลาส

35
00:02:59,630 --> 00:03:05,630
‫Gun C++ เท่านั้น

36
00:03:05,960 --> 00:03:11,000
‫นี่จะไม่ใช่ตัวชี้เพราะเราไม่ได้ชี้ไปที่ตัวปืนจริง

37
00:03:11,000 --> 00:03:15,590
‫สิ่งที่เราได้จากตัวแปรนี้คือตัวคลาสเอง

38
00:03:15,590 --> 00:03:18,530
‫ในกรณีนี้ เป็นคลาสพิมพ์เขียว แต่ก็ยังเป็นคลาส

39
00:03:18,860 --> 00:03:27,950
‫สิ่งที่เราอยากจะเรียกว่านี่คือคลาสปืน เพียงเพื่อให้ชัดเจนว่านี่ไม่ใช่ตัวปืนจริงๆ

40
00:03:28,010 --> 00:03:36,800
‫เราต้องการทรัพย์สินอื่นที่นี่เพื่อเก็บปืน และนั่นจะไม่ใช่ค่าเริ่มต้นในการแก้ไข

41
00:03:36,800 --> 00:03:42,470
‫โดยพื้นฐานแล้ว เราไม่ต้องการให้สิ่งนี้เป็นคุณสมบัติที่มองเห็นได้ แต่มันจะเป็นตัวชี้ปืน

42
00:03:42,470 --> 00:03:43,130
‫A

43
00:03:43,130 --> 00:03:43,880
‫ดูความแตกต่าง?

44
00:03:43,880 --> 00:03:50,780
‫หนึ่งในนั้นคือซับคลาสของปืน อีกอันหนึ่งคือตัวชี้ปืน และอันนี้คือปืนจริง

45
00:03:50,780 --> 00:03:54,710
‫นั่นคือเมื่อเราสร้างอินสแตนซ์ของคลาสแล้ว เราจะเก็บมันไว้ที่นั่น

46
00:03:54,920 --> 00:04:08,030
‫ไปที่ CP Shooter ของเราและจบการเล่นเริ่มต้นที่เราวางไข่ของสิ่งต่าง ๆ ดังนั้นเราจะมีปืนเท่ากับปืนของนักแสดงวางไข่ในโลก

47
00:04:08,030 --> 00:04:14,930
‫และข้อโต้แย้งที่เราจะพูดถึงในที่นี้คือคลาสปืน ซึ่งเราจะตั้งไว้ในพิมพ์เขียว

48
00:04:14,930 --> 00:04:17,810
‫เลยลองมาเรียบเรียงกันดูนะครับ

49
00:04:17,810 --> 00:04:18,890
‫อาจทำให้เราผิดพลาดได้บ้าง

50
00:04:18,890 --> 00:04:25,850
‫มาดูกัน ฉันได้เปิดบันทึกข้อความพร้อมกับบันทึกการคอมไพล์ และนั่นเอง เราได้รับข้อผิดพลาดบางอย่างที่นี่ในไฟล์ส่วนหัวที่ระบุว่าไม่ได้ประกาศ

51
00:04:25,850 --> 00:04:31,250
‫identifier เพราะเราต้องส่งต่อการประกาศปืน

52
00:04:31,250 --> 00:04:35,690
‫ดังนั้นฉันจะทำสิ่งนี้ที่ด้านบนเพราะในสองแห่งที่ฉันจะเรียกว่าคลาส

53
00:04:36,580 --> 00:04:39,460
‫ปืนแบบนั้น

54
00:04:39,760 --> 00:04:45,070
‫และเป็นเพียงการเตือนความจำ การประกาศไปข้างหน้าเช่นนี้หมายความว่าเราสามารถลดเวลาในการรวบรวมของเราลงได้

55
00:04:45,070 --> 00:04:47,650
‫โดยไม่รวมไฟล์ส่วนหัวจำนวนมากเกินไป

56
00:04:48,010 --> 00:04:49,570
‫ลองคอมไพล์ใหม่ดูครับ

57
00:04:49,820 --> 00:04:51,250
‫ดูเหมือนว่านั่นเป็นข้อผิดพลาดเพียงอย่างเดียว

58
00:04:51,250 --> 00:04:52,730
‫ตอนนี้เรียบเรียงเรียบร้อยแล้ว

59
00:04:52,750 --> 00:04:55,930
‫ไปข้างหน้าและกดเล่นและดูว่าเกิดอะไรขึ้น

60
00:04:55,960 --> 00:04:56,410
‫ทางออก

61
00:04:56,440 --> 00:04:57,860
‫ดูของเรา.

62
00:04:57,880 --> 00:05:00,760
‫โดยพื้นฐานแล้วเราต้องการดูบันทึกข้อความซึ่งไม่ได้เปิดไว้

63
00:05:00,760 --> 00:05:07,770
‫ไปที่หน้าต่างและเครื่องมือสำหรับนักพัฒนาและดูบันทึกผลลัพธ์และดูว่าเรามีข้อผิดพลาดใด ๆ ที่นี่หรือไม่

64
00:05:07,780 --> 00:05:10,810
‫ใช่ ตัวแสดงการวางไข่ล้มเหลวเนื่องจากไม่ได้ระบุคลาส

65
00:05:10,810 --> 00:05:14,920
‫แน่นอนว่าไม่ได้ระบุคลาสเพราะเรายังไม่ได้กำหนดค่าในพิมพ์เขียว

66
00:05:14,920 --> 00:05:21,190
‫ดังนั้น ฉันจะให้ความท้าทายกับคุณในการต่อปืน ค้นหาคุณสมบัติในพิมพ์เขียวตัวละครของเรา

67
00:05:21,190 --> 00:05:25,660
‫ตั้งค่าให้เป็นปืนที่ถูกต้อง และทดสอบว่ามันวางไข่

68
00:05:25,660 --> 00:05:26,740
‫หยุดวิดีโอชั่วคราวแล้วไปกันเลย

69
00:05:26,770 --> 00:05:27,580
‫เค ยินดีต้อนรับกลับ

70
00:05:27,580 --> 00:05:37,210
‫ไปที่ตัวละครนักกีฬาของเรา BP และค้นหาคุณสมบัติที่ควรอยู่ในเส้นทางหรือชั้นเรียน

71
00:05:37,210 --> 00:05:40,810
‫ค่าเริ่มต้นจะลงรายละเอียดและสนับสนุนตัวละคร

72
00:05:40,810 --> 00:05:47,380
‫คุณสามารถเห็นได้ว่าเรามีอัตราการหมุนที่นี่ ซึ่งเราได้กำหนดค่าไว้ และเรามีคลาสปืนของเรา ซึ่งเป็นเมนูดรอปดาวน์ที่ช่วยให้ฉันเลือกระหว่างปืนที่เป็นปืน

73
00:05:47,380 --> 00:05:52,150
‫C++

74
00:05:52,150 --> 00:05:54,460
‫และนี่คือที่มาของหลักการตั้งชื่อของเรา

75
00:05:54,460 --> 00:05:57,790
‫สิ่งที่นำหน้าด้วยขีดล่าง BP คือพิมพ์เขียว

76
00:05:57,790 --> 00:06:05,830
‫ดังนั้นเราต้องการไรเฟิลขีดล่าง BP ของเรา เลือกคอมไพล์เซฟนั้น เข้าไปในฉากแล้วกดเล่น

77
00:06:06,190 --> 00:06:11,950
‫หวังว่าเราจะไม่มีข้อผิดพลาดเกี่ยวกับการวางไข่ของปืน

78
00:06:11,980 --> 00:06:13,480
‫ปืนควรจะวางไข่

79
00:06:13,480 --> 00:06:14,410
‫ตกลง.

80
00:06:14,410 --> 00:06:20,620
‫และเพื่อดูว่ามีหรือไม่ เราสามารถ f แปดและดูในโครงร่างโลก

81
00:06:20,710 --> 00:06:26,200
‫ถ้าฉันทำให้โลกกว้างขึ้นอีกหน่อย ฉันสามารถค้นหาปืนไรเฟิลขีดล่างของ BP ได้

82
00:06:26,350 --> 00:06:26,910
‫เย่.

83
00:06:26,920 --> 00:06:32,470
‫เรามีไรเฟิลขีดเส้นใต้ของ BP ในขณะที่มันอยู่ในที่ห่างไกลและไม่ใช่ ID เด็กที่ถูกต้อง

84
00:06:32,470 --> 00:06:34,780
‫ที่จะเป็นหัวข้อของการบรรยายต่อไป

85
00:06:34,780 --> 00:06:36,760
‫แล้วเจอกันครับ

