﻿1
00:00:04,610 --> 00:00:05,450
‫สวัสดีและยินดีต้อนรับ.

2
00:00:05,450 --> 00:00:13,730
‫ในการบรรยายนี้ เราจะเชื่อมต่อระบบสุขภาพของเรากับพิมพ์เขียวแอนิเมชั่น เพื่อที่ฉันจะได้ยิงตัวละครนี้ไปจนกว่าเขาจะตาย

3
00:00:13,730 --> 00:00:15,680
‫มาดูกันว่ามันทำงานอย่างไร

4
00:00:16,520 --> 00:00:22,820
‫ดังนั้นเราจึงต้องการให้บูลีนนี้ในพิมพ์เขียวแอนิเมชั่นถูกตั้งค่าโดยอัตโนมัติจากการเล่นเกมของเรา

5
00:00:23,090 --> 00:00:29,300
‫และถ้าเราดูกราฟเหตุการณ์ของเราแล้วดูว่าปัจจุบันนี้ทำงานอย่างไร คุณสมบัติอื่นๆ แบบนี้

6
00:00:29,300 --> 00:00:34,460
‫เช่น รับความเร็ว แอ็คทีฟ แปลง เราจะไปที่การจำนำ และเรากำลังใช้ฟังก์ชันรับ

7
00:00:34,460 --> 00:00:38,480
‫ทุกครั้งที่เราต้องการอัปเดตแอนิเมชั่นของเรา

8
00:00:38,750 --> 00:00:45,180
‫ดังนั้นเราจึงต้องการติดตามในรูปแบบนี้ที่เราจะไปหาว่าผู้เล่นของเราตายหรือไม่

9
00:00:45,200 --> 00:00:52,400
‫ในการทำเช่นนั้น เราจำเป็นต้องเปิดเผยฟังก์ชันการทำงานบางอย่าง ฟังก์ชันที่เรียกใช้ได้จาก C++ ของเรา

10
00:00:52,520 --> 00:00:57,140
‫ลองไปที่ C++ และดูว่ามีอะไรบ้าง

11
00:00:57,140 --> 00:01:02,540
‫เราจึงสามารถสร้างฟังก์ชันสาธารณะได้ แต่นั่นไม่ได้ทำให้สามารถเข้าถึงได้โดยไม่จำเป็น

12
00:01:03,050 --> 00:01:11,030
‫ในการเข้าใช้งาน เราจำเป็นต้องมีฟังก์ชัน U ซึ่งทำให้มองเห็นได้สำหรับพิมพ์เขียวและเปิดระบบเครื่องมือส่วนหัว

13
00:01:11,030 --> 00:01:15,080
‫แต่เราต้องก้าวไปอีกขั้นหนึ่งมากกว่าแค่มีมันเป็นหน้าที่ของคุณ

14
00:01:15,080 --> 00:01:20,150
‫ดังนั้นเราจึงเริ่มต้นด้วยมาโครฟังก์ชันของคุณ แต่เราต้องการให้พิมพ์เขียวเรียกได้

15
00:01:20,150 --> 00:01:23,180
‫นั่นคือตัวเลือกที่เราสามารถใช้พิมพ์เขียว callable

16
00:01:23,990 --> 00:01:32,460
‫อย่างไรก็ตาม มีอีกตัวเลือกหนึ่งที่แทนที่พิมพ์เขียวหรือบอกเป็นนัยว่าเป็นพิมพ์เขียวที่เรียกได้และนั่นก็เป็นพิมพ์เขียวบริสุทธิ์

17
00:01:32,480 --> 00:01:36,830
‫ตอนนี้เราจะเห็นความแตกต่างระหว่าง blueprint pure และ Blueprint ที่สามารถเรียกได้ในเวลาเพียงไม่กี่วินาที

18
00:01:36,830 --> 00:01:43,430
‫แต่แค่รู้ว่าถ้าคุณใช้ Blueprint Pure มันก็ทำแบบเดียวกับ Blueprint Callable แล้วก็บางอัน

19
00:01:43,430 --> 00:01:45,650
‫ดังนั้นจึงทำได้มากกว่า Blueprint callable เล็กน้อย

20
00:01:46,070 --> 00:01:51,410
‫แล้วสิ่งที่เราต้องการคือฟังก์ชันที่คืนค่าบูลีนที่ระบุว่าตัวละครนี้ตายหรือไม่

21
00:01:52,290 --> 00:01:54,440
‫ที่จะเป็นประโยชน์ให้เราได้รู้

22
00:01:54,450 --> 00:01:58,740
‫และสุดท้าย เราต้องการให้สิ่งนี้เป็นฟังก์ชันสำหรับสมาชิกในคอนเสิร์ต

23
00:01:58,770 --> 00:02:00,810
‫แล้วทำไมถึงอยากเป็นคอนเสิร์ตล่ะ?

24
00:02:00,810 --> 00:02:08,040
‫เพราะเมื่อเราเรียกใช้ฟังก์ชันนี้ เราไม่ได้คาดหวังว่ามันจะเปลี่ยนสถานะของนักกีฬาเป็นตัวละคร

25
00:02:08,040 --> 00:02:12,030
‫ดังนั้นเราจึงพูดได้อย่างปลอดภัยว่านี่ควรเป็นงานคอนเสิร์ต

26
00:02:12,150 --> 00:02:19,800
‫และที่จริงแล้ว คอนเสิร์ตและพิมพ์เขียวล้วนมักจะไปด้วยกันเพราะพิมพ์เขียวบริสุทธิ์หมายความว่าถ้าเราเข้าไปในพิมพ์เขียวใด

27
00:02:19,800 --> 00:02:24,330
‫ๆ เราก็สามารถดูโหนดบริสุทธิ์ได้

28
00:02:24,330 --> 00:02:26,130
‫อันนี้รับแปลงร่าง

29
00:02:26,130 --> 00:02:27,030
‫นั่นเป็นโหนดบริสุทธิ์

30
00:02:27,030 --> 00:02:30,720
‫Get velocity คือ pure node set speed ไม่ใช่ pure node.

31
00:02:30,720 --> 00:02:33,330
‫คุณเห็นสิ่งที่อาจเชื่อมโยงสิ่งเหล่านี้เข้าด้วยกันหรือไม่?

32
00:02:33,330 --> 00:02:37,380
‫สิ่งที่เกี่ยวกับสิ่งเหล่านี้ทำให้สิ่งนี้ไม่บริสุทธิ์และสิ่งนี้บริสุทธิ์?

33
00:02:37,410 --> 00:02:40,800
‫โดยทั่วไปแล้ว มันคือความจริงที่ว่ามีพินการประหารชีวิต

34
00:02:40,800 --> 00:02:44,970
‫โหนดบริสุทธิ์คือโหนดที่ไม่มีพินการดำเนินการ

35
00:02:44,970 --> 00:02:54,210
‫และมักจะปลอดภัยที่จะบอกว่าบางสิ่งไม่มีพินการดำเนินการเมื่อไม่มีผลกระทบใดๆ กับสิ่งที่เรียกเฉพาะกับผลลัพธ์เท่านั้น

36
00:02:54,270 --> 00:03:01,620
‫โดยพื้นฐานแล้ว นี่หมายความว่าไม่ว่าเราจะเรียกใช้ฟังก์ชันนี้กี่ครั้ง ก็จะให้ผลลัพธ์เหมือนเดิมเสมอ

37
00:03:01,620 --> 00:03:05,160
‫มันจะมีผลเช่นเดียวกันกับโปรแกรมเสมอ

38
00:03:05,160 --> 00:03:06,720
‫มันเป็นหน้าที่บริสุทธิ์

39
00:03:06,720 --> 00:03:09,240
‫มันไม่เปลี่ยนแปลงอะไรเมื่อมีการเรียก

40
00:03:09,240 --> 00:03:14,670
‫ดังนั้นมันจึงเหมือนกับค่าคงที่ แม้ว่ามันจะแข็งแกร่งขึ้นเล็กน้อยเพราะสิ่งที่มันพูดไม่ใช่แค่ว่ามันไม่ได้เปลี่ยนแปลงอะไรที่นี่ในตัวละครของนักกีฬา

41
00:03:14,670 --> 00:03:22,020
‫แต่มันไม่ได้เปลี่ยนอะไรทั่วโลก สถานะใด ๆ ที่ใดก็ได้

42
00:03:22,020 --> 00:03:22,890
‫หยุดเต็มที่

43
00:03:22,890 --> 00:03:28,980
‫อินพุตเดียว เอฟเฟกต์เดียวที่มีคือเอาต์พุตที่สร้าง

44
00:03:29,580 --> 00:03:32,340
‫นั่นคือเหตุผลที่เราเลือกที่จะทำให้พิมพ์เขียวนี้บริสุทธิ์

45
00:03:32,340 --> 00:03:37,170
‫มันไม่จำเป็นต้องใช้พินการดำเนินการ ซึ่งทำให้ดีกว่ามากในพิมพ์เขียว

46
00:03:37,170 --> 00:03:44,340
‫และมันก็เป็นการแสดงออกถึงความจริงที่ว่าเราไม่ได้ทำการเปลี่ยนแปลงใด ๆ กับสถานะของเกมของเราเมื่อเราเรียกใช้ฟังก์ชันนี้

47
00:03:44,520 --> 00:03:48,660
‫ไปข้างหน้าและพยายามสร้างการใช้งานสำหรับสิ่งนี้

48
00:03:48,660 --> 00:03:54,180
‫อันที่จริง ฉันจะปล่อยให้การใช้งานนั้นขึ้นอยู่กับคุณว่าเป็นความท้าทาย และเราจะพูดถึงเรื่องนี้ในกราฟแอนิเมชัน

49
00:03:54,180 --> 00:04:00,060
‫ขออภัย กราฟเหตุการณ์ของพิมพ์เขียวแอนิเมชัน

50
00:04:00,210 --> 00:04:03,810
‫เราจะทำสิ่งนี้โดยมีชุดใหม่ตรงนี้

51
00:04:03,810 --> 00:04:18,660
‫เราต้องการตั้งค่า is dead boolean variable ในตอนท้าย และเราต้องการหาเจ้าของโรงรับจำนำ และเราต้องการที่จะแคสต์เพราะมันจะต้องเป็นตัวละครที่ยิงปืนเพื่อให้สิ่งนี้เป็นคุณสมบัติที่ตายแล้ว

52
00:04:18,660 --> 00:04:23,430
‫ดังนั้นเราจึงต้องการแคสต์ไปที่ และในกรณีนี้ ฉันต้องการแคสต์ไปยังตัวละคร C++

53
00:04:23,430 --> 00:04:28,260
‫Shooter เพราะฉันไม่ต้องพูดจนสุดความสามารถว่านี่เป็นเวอร์ชันพิมพ์เขียวอย่างแน่นอน

54
00:04:28,530 --> 00:04:31,650
‫เพราะฟังก์ชันใหม่นี้มีอยู่ใน ระดับ C++

55
00:04:31,650 --> 00:04:33,510
‫ดังนั้นเราจะไปข้างหน้าและโยน

56
00:04:33,510 --> 00:04:36,930
‫ถ้าเราประสบความสำเร็จในการคัดเลือกนักแสดง เราจะตั้งค่าคุณสมบัติ is dead

57
00:04:37,110 --> 00:04:43,650
‫และขอผมใส่โหนดเปลี่ยนเส้นทางที่นี่เพื่อทำให้พิมพ์เขียวของเราดูดีขึ้นนิดหน่อย

58
00:04:44,070 --> 00:04:47,610
‫แล้วสิ่งที่เราต้องการจะทำคือใช้การอ้างอิงตัวละครของเกมยิงปืนนี้

59
00:04:47,610 --> 00:04:52,980
‫ตอนนี้เราได้โยนมันให้กับตัวละครมือปืน เรารู้ว่ามันควรจะมีคุณสมบัติตายตัว

60
00:04:52,980 --> 00:04:54,900
‫ดังนั้นเราควรจะทำอย่างนั้นได้

61
00:04:55,080 --> 00:05:00,180
‫เมื่อคุณคอมไพล์และใช้งานได้แล้ว คุณจะได้รับคุณสมบัตินี้เป็น dead property และตั้งค่าไว้ที่นี่

62
00:05:01,080 --> 00:05:04,860
‫ถึงเวลาท้าทายของคุณในการคำนวณว่าเราตายหรือไม่

63
00:05:04,860 --> 00:05:08,220
‫ดังนั้นส่งคืนบูลีนที่ถูกต้องจากฟังก์ชัน is dead ของเรา

64
00:05:08,220 --> 00:05:09,180
‫นั่นคือขั้นตอนแรก

65
00:05:09,180 --> 00:05:15,750
‫คุณอาจต้องการใช้ความไม่เท่าเทียมกันบางอย่างกับตัวแปรด้านสุขภาพของเรา จากนั้นจึงเชื่อมโยงตัวแปรของเรา

66
00:05:15,750 --> 00:05:20,310
‫ตัวแปรตายคือตัวแปรตายในพิมพ์เขียวแอนิเมชั่นที่เราทำได้ไม่ถึง

67
00:05:20,310 --> 00:05:23,490
‫เราแค่ต้องการให้เรารวบรวมโดยพื้นฐานจากการทำสิ่งนั้น

68
00:05:23,490 --> 00:05:26,280
‫หยุดวิดีโอชั่วคราวและจัดเรียงข้อมูลนั้น

69
00:05:27,520 --> 00:05:27,790
‫ตกลง.

70
00:05:27,790 --> 00:05:28,340
‫ยินดีต้อนรับกลับ.

71
00:05:28,360 --> 00:05:31,840
‫ไปที่โค้ดกันก่อนเลย

72
00:05:31,840 --> 00:05:36,730
‫อย่างตรงไปตรงมา ผมจะคืนค่านิพจน์ที่คืนค่าบูลีน

73
00:05:36,730 --> 00:05:43,450
‫เลยอยากบอกว่า สุขภาพน้อยกว่าหรือเท่ากับศูนย์ ในกรณีไหนที่เราตายจริง ๆ ?

74
00:05:43,510 --> 00:05:47,710
‫ง่ายพอๆ กับการแสดงออกของฟังก์ชัน

75
00:05:47,710 --> 00:05:49,990
‫ไปข้างหน้าและสร้างสิ่งนั้น

76
00:05:50,680 --> 00:05:55,600
‫และเมื่อคอมไพล์เสร็จแล้ว เราก็สามารถเข้าไปที่ Unreal และเชื่อมต่อมันได้

77
00:05:55,600 --> 00:06:02,020
‫ลากจาก as Shooter ไปที่ตัวละคร เราเป็นโหนด เราจะมีการอ้างอิงตัวละครของ Shooter ที่นี่ ดังนั้นเราจึงต้องการทำคือ

78
00:06:02,020 --> 00:06:09,550
‫Dead ให้เรา นี่คือฟังก์ชั่นที่ตายแล้ว คุณจะเห็นได้ว่ามันไม่มีพินสำหรับการดำเนินการ เพราะมันบริสุทธิ์

79
00:06:09,580 --> 00:06:15,010
‫จากนั้นเรานำบูลีนนี้ออกจากนั้นและโยงมันเข้ากับตัวแปรตายตัวของเรา

80
00:06:15,130 --> 00:06:21,340
‫และตอนนี้ถ้าเราเล่นต่อ เราควรจะสามารถฆ่าตัวละครนั้นในโลกนี้ได้

81
00:06:21,340 --> 00:06:24,190
‫เราจะยิงเขาจนกว่าสุขภาพของเขาจะลดลงเหลือศูนย์

82
00:06:24,190 --> 00:06:25,300
‫และที่นั่นคุณไป

83
00:06:25,300 --> 00:06:28,780
‫อนิเมชั่นได้ฆ่าเขาเรียบร้อยแล้ว

