﻿1
00:00:04,370 --> 00:00:05,360
‫สวัสดีและยินดีต้อนรับ.

2
00:00:05,360 --> 00:00:11,450
‫ในการบรรยายนี้ เราจะมาดูว่าเราจะสร้างโหนดใหม่ใน Blueprint จาก C++ ของเราได้อย่างไร

3
00:00:11,450 --> 00:00:17,180
‫เพื่อให้เราสามารถเรียกใช้ฟังก์ชัน C++ จากภายใน Blueprint ได้

4
00:00:17,180 --> 00:00:18,770
‫มาดูวิธีทำกันเลยดีกว่า

5
00:00:18,920 --> 00:00:27,260
‫ตอนนี้ ฉันสามารถใช้พิมพ์เขียวเพื่อเรียกโหนดพิมพ์เขียวได้ แต่จริงๆ แล้วฉันต้องการเปิดใช้งานตัวจับของเราจากพิมพ์เขียวชิ้นนี้ที่นี่

6
00:00:27,260 --> 00:00:32,300
‫ไม่ใช่พิมพ์สตริงออกมา

7
00:00:32,300 --> 00:00:34,670
‫แล้วฉันจะทำอย่างนั้นได้อย่างไร?

8
00:00:34,970 --> 00:00:43,520
‫โชคดีที่เราสามารถแสดงฟังก์ชันจากคลาส C++ ให้เป็นพิมพ์เขียวได้อย่างง่ายดาย

9
00:00:43,520 --> 00:00:46,160
‫และวิธีที่เราทำมีดังนี้

10
00:00:46,160 --> 00:00:48,560
‫เราจะไปสร้างฟังก์ชันสาธารณะใหม่

11
00:00:48,560 --> 00:00:52,520
‫ดังนั้นฉันจะไปที่ส่วนสาธารณะของฉันภายใต้องค์ประกอบติ๊ก

12
00:00:52,520 --> 00:00:58,250
‫และที่นี่ฉันจะสร้างฟังก์ชันใหม่ด้วยประเภท void return ที่เรียกว่า release

13
00:00:58,250 --> 00:01:03,830
‫ดังนั้นเราจะทำ grab ในภายหลัง แต่เราเพิ่งจะเรียกใช้ฟังก์ชัน release สำหรับตอนนี้

14
00:01:03,920 --> 00:01:07,790
‫ฉันจะทำให้สิ่งนี้พร้อมใช้งานใน Blueprint ได้อย่างไร

15
00:01:07,790 --> 00:01:10,850
‫ผมต้องทำให้มันเป็นฟังก์ชัน U

16
00:01:10,850 --> 00:01:13,370
‫ดังนั้นคุณจึงมีคุณสมบัติสำหรับตัวแปร

17
00:01:13,370 --> 00:01:20,570
‫หน้าที่ของคุณนั้นเทียบเท่ากับการทำให้ฟังก์ชันนั้นมองเห็นได้โดยทั่วไปในดินแดนแห่งพิมพ์เขียว

18
00:01:20,570 --> 00:01:23,210
‫แต่เราไม่ได้หยุดเพียงแค่นั้น เช่นเดียวกับคุณสมบัติใหม่

19
00:01:23,210 --> 00:01:31,580
‫เราต้องทำให้มันแก้ไขได้ทุกที่ที่นี่ด้วยฟังก์ชัน u เราต้องทำให้มันเป็นพิมพ์เขียวที่เรียกใช้งานได้ และตามที่ชื่อแนะนำ

20
00:01:31,580 --> 00:01:38,330
‫หมายความว่าตอนนี้ฟังก์ชันนี้กลายเป็นโหนดที่พิมพ์เขียวสามารถเข้าถึงได้

21
00:01:38,330 --> 00:01:42,530
‫ไปที่การคว้า CP และสร้างการนำไปใช้สำหรับสิ่งนี้

22
00:01:42,530 --> 00:01:44,480
‫มันจะเป็นโมฆะส่งคืนประเภท

23
00:01:44,480 --> 00:01:45,500
‫มันจะเป็นยู

24
00:01:45,530 --> 00:01:50,720
‫Grabber, ทวิภาค, การปล่อยโคลอน, ไม่มีพารามิเตอร์

25
00:01:50,720 --> 00:01:57,350
‫และเราจะใส่เนื้อความของฟังก์ชัน ซึ่งฉันจะติด u เข้าสู่ระบบ และฉันจะให้ข้อความ

26
00:01:57,380 --> 00:02:05,600
‫ปล่อยตัวจับเช่นนั้น จากนั้นเราจะคอมไพล์และส่งเสียงบี๊บกลับมา

27
00:02:05,600 --> 00:02:12,200
‫ผู้เล่น ฉันจะลบโหนดสตริงการพิมพ์และฉันจะลากออกจาก release ที่นี่และฉันจะค้นหา

28
00:02:12,200 --> 00:02:17,060
‫release เป็นฟังก์ชันในนี้

29
00:02:17,060 --> 00:02:19,130
‫ตอนนี้เราไปดูรอบๆ กันสักหน่อย

30
00:02:19,130 --> 00:02:23,090
‫ไม่มีอะไรแสดงขึ้นในขณะนี้เพราะฉันต้องทำสิ่งนี้บนตัวจับ

31
00:02:23,090 --> 00:02:34,360
‫ลองนำองค์ประกอบ grabber มาลากลงในกราฟเหตุการณ์เพื่อสร้างตัวแปร grabber จากนั้นลากออกจากส่วนนี้และค้นหาการเปิดตัว

32
00:02:34,370 --> 00:02:36,680
‫ตอนนี้คุณสังเกตเห็นว่าไม่มีอะไรเกิดขึ้นในกรณีนี้เช่นกัน

33
00:02:36,680 --> 00:02:42,020
‫และนั่นเป็นเพราะว่าเราใช้ live coding และบางครั้งสิ่งที่คอมไพล์ด้วย live coding

34
00:02:42,020 --> 00:02:44,180
‫จะไม่แสดงในโปรแกรมแก้ไข

35
00:02:44,180 --> 00:02:50,210
‫สิ่งที่เราต้องทำคือปิดตัวแก้ไข ปิดหน้าต่างเขียนโค้ดแบบสด จากนั้นในโค้ด

36
00:02:50,210 --> 00:02:57,410
‫Visual Studio กด shift ควบคุม B และสร้างโดยใช้ตัวแก้ไข Crypt Raider ชนะ 64 Development Build

37
00:02:57,410 --> 00:03:03,650
‫รอให้สำเร็จแล้วเปิดโปรแกรมแก้ไขใหม่จากไฟล์โครงการใหม่

38
00:03:03,650 --> 00:03:10,640
‫ตอนนี้ถ้าเราเปิดเครื่องเล่น BP ของเราอีกครั้งและตอนนี้ลากตัวจับออกไป เราจะค้นหาการปล่อยตัว

39
00:03:10,640 --> 00:03:13,850
‫คุณจะเห็นได้ว่าขณะนี้มีโหนดที่เรียกว่า release

40
00:03:13,850 --> 00:03:17,930
‫และที่จริงทั้งหมดที่ทำคือจะเรียกว่า C++

41
00:03:17,930 --> 00:03:25,790
‫คุณจะได้เห็นว่าคุณสามารถใช้ Blueprint และ C++ ร่วมกันอย่างใกล้ชิดด้วยวิธีนี้ได้อย่างไรโดยเปิดเผยสิ่งต่าง

42
00:03:25,790 --> 00:03:28,730
‫ๆ C++ ในโลกของ Blueprint

43
00:03:28,730 --> 00:03:33,170
‫ตอนนี้ฉันกำลังจะเชื่อมต่อพินการรีลีสของฉันกับรีลีสโหนด

44
00:03:33,380 --> 00:03:38,630
‫เรากำลังจะไปในดันเจี้ยนของเรา และเรากำลังจะตีเล่น

45
00:03:39,320 --> 00:03:46,940
‫และตอนนี้ถ้าฉันคว้าแล้วปล่อย คุณจะไม่เห็นอะไรเลย เพราะมันอยู่ในบันทึกผลลัพธ์

46
00:03:46,940 --> 00:03:52,430
‫ให้เปิดล็อกเอาท์พุตและเชื่อมต่อเข้ากับเลย์เอาต์แล้วกดเล่นอีกครั้ง

47
00:03:53,360 --> 00:03:57,860
‫และตอนนี้เมื่อเราคว้าแล้วปล่อย คุณจะเห็นว่ามีข้อความสั้นๆ อยู่ที่นั่น

48
00:03:57,860 --> 00:04:04,340
‫มันเลื่อนผ่านไปเร็วมากเพราะทุก ๆ ขีดที่เรากำลังทำสิ่งนี้โดนรูปปั้นสถานะการ์กอยล์

49
00:04:04,340 --> 00:04:09,530
‫แต่ถ้าคุณหยุดและมองย้อนกลับไปในบันทึก คุณจะเห็นข้อความว่า ตัวจับที่ปล่อยออกมา

50
00:04:09,530 --> 00:04:12,980
‫ดังนั้นโค้ด C++ ของเราจึงถูกดำเนินการ

51
00:04:13,010 --> 00:04:19,280
‫ตกลง ตอนนี้ฉันต้องการให้คุณย้ายโค้ดการกวาดของเราไปที่ฟังก์ชันคว้า

52
00:04:19,280 --> 00:04:22,340
‫คุณกำลังจะสร้างฟังก์ชันการคว้าและเรียกมันจากพิมพ์เขียว

53
00:04:22,340 --> 00:04:25,010
‫คุณจะทำแบบเดียวกับที่ฉันเพิ่งใช้ฟังก์ชันรีลีส

54
00:04:25,160 --> 00:04:29,630
‫แต่เมื่อคุณสร้างเนื้อความของฟังก์ชัน grab แทนที่จะพิมพ์อะไร

55
00:04:29,630 --> 00:04:36,500
‫ให้ย้ายโค้ดการกวาดนั้นและคำสั่ง if และตัวแปรการเตรียมทั้งหมดจาก TIC เพื่อไม่ให้มันทำ

56
00:04:36,500 --> 00:04:43,100
‫ทุกครั้งที่เราติ๊กเมื่อเราเรียกใช้ฟังก์ชัน grab นั้น เมื่อเรากดปุ่มเมาส์ลงหรือกดทริกเกอร์บนคอนโทรลเลอร์ของเรา

57
00:04:43,100 --> 00:04:49,970
‫ดังนั้นให้คอมไพล์ใหม่และตรวจสอบบันทึกเพื่อให้แน่ใจว่าจะเกิดขึ้นเมื่อคุณกดปุ่มเท่านั้น

58
00:04:49,970 --> 00:04:54,800
‫หยุดวิดีโอชั่วคราวและไปกันเลย

59
00:04:58,180 --> 00:04:59,140
‫ยินดีต้อนรับกลับ.

60
00:04:59,170 --> 00:05:03,850
‫ไปที่ C++ ของเราและไปที่ไฟล์ส่วนหัวของเรา

61
00:05:03,850 --> 00:05:07,390
‫ฉันจะปิดหน้าต่างคอมไพล์ที่นี่และเหนือรุ่น

62
00:05:07,390 --> 00:05:17,920
‫ฉันจะสร้างพิมพ์เขียวฟังก์ชัน U ใหม่ที่เรียกว่า callable ซึ่งจะกลายเป็นโมฆะที่เรียกว่า grab

63
00:05:17,920 --> 00:05:20,590
‫และเราจะนำไปใช้ใน C ++

64
00:05:20,590 --> 00:05:22,600
‫กลับกลายเป็นความว่างเปล่าอีกครั้ง

65
00:05:22,600 --> 00:05:28,540
‫คุณคว้าเครื่องหมายทวิภาค วงเล็บทวิภาคแล้วจัดฟัน

66
00:05:28,840 --> 00:05:34,690
‫และฉันจะย้ายโค้ดทั้งหมดนี้ออกจากองค์ประกอบ TIC เพราะเรากำลังตั้งค่าเวกเตอร์เริ่มต้นและสิ่งดีๆ

67
00:05:34,690 --> 00:05:36,130
‫ทั้งหมดนั้น

68
00:05:36,280 --> 00:05:42,940
‫ลงไปให้สุดแล้วตัดออกแล้ววางลงใน grab แทนในที่ที่ควรจะเป็น

69
00:05:42,940 --> 00:05:43,810
‫ไม่เป็นไร

70
00:05:43,810 --> 00:05:50,120
‫ตอนนี้เรามาดูกันว่าการเข้ารหัสแบบสดจะทำให้เกิดฟังก์ชั่นในเครื่องเล่น BP หรือไม่

71
00:05:50,140 --> 00:05:55,150
‫ไปที่เครื่องเล่นเสียงบี๊บ ลบสตริงการพิมพ์ของเราแล้วลากออกไป

72
00:05:55,150 --> 00:05:58,600
‫หยิบโหนดที่เรามีและดูว่าเราสามารถหาฟังก์ชันคว้าได้หรือไม่

73
00:05:58,600 --> 00:06:02,170
‫โอเค คราวนี้ฟังก์ชั่นการคว้าก็พร้อมให้เราใช้

74
00:06:02,170 --> 00:06:02,860
‫ที่ที่ดี

75
00:06:02,860 --> 00:06:11,410
‫ตอนนี้ มาต่อกับพินการดำเนินการที่กดแล้ว ไปที่ดันเจี้ยนของเรา กดปุ่มเล่น และตรวจดูให้แน่ใจว่าเราเลื่อนลงไปที่ด้านล่างของบันทึกผลลัพธ์

76
00:06:11,440 --> 00:06:17,530
‫คลิกขวาที่วิวพอร์ตของฉันแล้วมองไปรอบๆ จากนั้นฉันจะกดปุ่มซ้าย

77
00:06:17,530 --> 00:06:22,150
‫มันบอกว่าไม่มีนักแสดงคนไหนโดนแล้วจึงปล่อยตัวคว้าทันที ดังนั้นจึงไม่มีนักแสดงคนใดโดน

78
00:06:22,150 --> 00:06:24,550
‫แล้วฉันก็ปล่อยกุญแจ ไม่มีการไขว่คว้า

79
00:06:24,550 --> 00:06:26,770
‫ถ้าฉันขึ้นไปบนการ์กอยล์ ฉันจะดูมัน

80
00:06:26,800 --> 00:06:31,450
‫ฉันกดลงไปและมันบอกว่านักแสดงตีรูปปั้นกากอย จากนั้นฉันสามารถปล่อยตัวจับได้

81
00:06:31,570 --> 00:06:38,770
‫ตอนนี้ เรามีสถาปัตยกรรมที่เหมาะสม เพื่อที่จะคว้าการ์กอยล์นี้

82
00:06:38,770 --> 00:06:42,760
‫ต่อไป เราต้องจัดการกับส่วนฟิสิกส์ของการตั้งค่านี้

83
00:06:42,880 --> 00:06:44,290
‫เจอกันใหม่ตอนหน้าค่ะ

