﻿1
00:00:04,340 --> 00:00:05,240
‫สวัสดีและยินดีต้อนรับ.

2
00:00:05,240 --> 00:00:12,830
‫ในการบรรยายนี้ เราจะทำการ refactoring โค้ดของเราเพื่อทำให้ฟังก์ชัน grab ของเรามีขนาดเล็กลงและอ่านง่ายขึ้น

3
00:00:12,830 --> 00:00:15,290
‫และเรากำลังจะใช้พารามิเตอร์ของเราอีกครั้ง

4
00:00:15,290 --> 00:00:18,860
‫คราวนี้ เรากำลังจะสร้างฟังก์ชันที่ใช้เป็นพารามิเตอร์

5
00:00:18,860 --> 00:00:21,380
‫มาดูวิธีทำกันเลยดีกว่า

6
00:00:22,130 --> 00:00:29,090
‫ดังนั้นจึงเป็นแนวทางปฏิบัติที่ดีที่สุดโดยทั่วไปสำหรับฟังก์ชันต่างๆ ที่จะต้องพยายามให้พอดีกับหน้าจอเดียว

7
00:00:29,090 --> 00:00:34,070
‫ในกรณีของฉัน หน้าจอของฉันใหญ่มาก แต่เรายังคงเรียนรู้อยู่ ดังนั้นจึงเหมาะสมที่จะมีฟังก์ชันที่เล็กกว่าเพื่อทำให้สิ่งต่างๆ

8
00:00:34,070 --> 00:00:37,490
‫เข้าใจได้

9
00:00:38,030 --> 00:00:46,070
‫และฉันคิดว่าฟังก์ชันการคว้านี้ยาวเกินไป ฉันคิดว่าเราสามารถแยกออกเป็นสองหน่วยที่ทำงานได้อย่างเป็นธรรม

10
00:00:46,070 --> 00:00:52,250
‫อันแรกจะเป็นบิตที่ทำการกวาดและทำการคำนวณทั้งหมดของเวคเตอร์เริ่มต้นและสิ้นสุด

11
00:00:52,250 --> 00:00:59,480
‫และให้ผลลัพธ์ของ Hit และไม่ว่าเราจะตีหรือไม่ก็ตาม บูลีนที่บอกว่าเราตีแล้ว

12
00:00:59,480 --> 00:01:08,930
‫แล้วบิตที่สองอยู่ใน if คำสั่งที่เราอาจจะปล่อยให้เป็นงานของการคว้าเพราะที่จริงจะทำอย่างไรกับการโลภใช่ไหม?

13
00:01:08,930 --> 00:01:10,790
‫เราต้องปลุกร่างกายที่แข็งกระด้าง

14
00:01:10,790 --> 00:01:16,430
‫เราต้องคว้าองค์ประกอบที่เหมาะสมที่จะอยู่ในวิธีการที่เรียกว่าในฟังก์ชั่นที่เรียกว่าคว้า

15
00:01:16,430 --> 00:01:20,210
‫แต่สิ่งอื่น ๆ นี้จะสัมผัสกันมากกว่าเล็กน้อย

16
00:01:20,210 --> 00:01:23,720
‫เป็นยูทิลิตี้ที่เราต้องดึงเข้ามามากกว่า

17
00:01:23,720 --> 00:01:28,580
‫ดังนั้นฉันจึงขอท้าให้คุณสร้างยูทิลิตี้นั้นขึ้นมา ให้สามารถเข้าถึงได้

18
00:01:28,580 --> 00:01:29,870
‫นั่นคือสิ่งที่ฉันคิดว่าควรจะเรียกว่า

19
00:01:29,870 --> 00:01:33,290
‫ฉันคิดว่ามันอธิบายสิ่งที่รหัสก้อนนั้นทำ

20
00:01:33,290 --> 00:01:37,220
‫ดังนั้นให้แยกรหัสการกวาดทั้งหมดออกเป็นฟังก์ชันส่วนตัวใหม่

21
00:01:37,220 --> 00:01:41,600
‫ลองคิดดูว่าพารามิเตอร์และค่าที่ส่งคืนควรเป็นอย่างไร

22
00:01:41,600 --> 00:01:43,670
‫จำไว้ว่า คุณมี 2 เอาต์พุต

23
00:01:43,670 --> 00:01:46,760
‫ดังนั้นเราจึงได้ตีและตีผล

24
00:01:46,760 --> 00:01:51,890
‫ดังนั้นคุณต้องคิดเกี่ยวกับการพยายามใช้พารามิเตอร์ out เพื่อให้ใช้งานได้

25
00:01:52,040 --> 00:01:58,970
‫ตอนนี้ ถ้าคุณต้องการคำใบ้เล็กน้อย ฉันจะแสดงให้คุณเห็นสิ่งที่ฉันจะใส่ในไฟล์ส่วนหัวในเวลาเพียงไม่กี่วินาที

26
00:01:58,970 --> 00:02:01,520
‫หากไม่เป็นเช่นนั้น คุณสามารถไปและหยุดวิดีโอชั่วคราวได้ทันที

27
00:02:01,820 --> 00:02:04,340
‫มิฉะนั้นฉันจะให้คำใบ้แก่คุณ

28
00:02:04,730 --> 00:02:12,740
‫เรากำลังจะไปที่ grab H และด้านล่างที่เราได้ตัวจัดการฟิสิกส์ เราจะมี Boolean

29
00:02:12,740 --> 00:02:18,860
‫return type เพื่อบอกเราว่ามีอะไรเกิดขึ้นไหม เราจะได้อะไร

30
00:02:18,910 --> 00:02:23,180
‫คว้าลูกบอล มาคว้า a ลูกบอลในการเข้าถึง

31
00:02:23,180 --> 00:02:27,650
‫จากนั้นเราต้องระบุพารามิเตอร์ซึ่งจะเป็นพารามิเตอร์ขาออก

32
00:02:27,650 --> 00:02:34,040
‫มันจะเป็นการอ้างอิงที่ไม่คงที่ไปยังผลลัพธ์ของการโจมตี F

33
00:02:34,040 --> 00:02:35,630
‫ใส่การอ้างอิง

34
00:02:36,590 --> 00:02:41,450
‫Ampersand แล้วเราจะเรียกว่า alt hit ผลลัพธ์เช่นนั้น

35
00:02:41,450 --> 00:02:49,340
‫แล้วฉันคิดว่าสิ่งนี้จะไม่เปลี่ยนแปลงอะไรในฟังก์ชันของเรา เพื่อให้เราสามารถทำให้มันมีราคาได้เช่นกัน

36
00:02:49,340 --> 00:02:52,280
‫เป็นคะแนนโบนัสเล็กน้อยหากคุณคิดไว้แล้ว

37
00:02:52,490 --> 00:02:57,860
‫หยุดวิดีโอชั่วคราวแล้วลองกรอกฟังก์ชันนั้นในไฟล์ C++

38
00:03:01,090 --> 00:03:01,420
‫ตกลง.

39
00:03:01,420 --> 00:03:02,190
‫ยินดีต้อนรับกลับ.

40
00:03:02,200 --> 00:03:03,010
‫ดังนั้นฉันจะคัดลอกมัน

41
00:03:03,010 --> 00:03:04,960
‫ไปที่ C++

42
00:03:04,960 --> 00:03:11,800
‫ฉันจะวางไว้ใต้องค์ประกอบ Get Physics Handle เพื่อให้ตรงกับลำดับที่เราได้รับในไฟล์ส่วนหัว

43
00:03:11,980 --> 00:03:16,930
‫ฉันจะเพิ่มตัว U ข้างหน้า

44
00:03:17,110 --> 00:03:18,520
‫ฉันจะเยื้องมันให้ถูกต้อง

45
00:03:18,520 --> 00:03:26,890
‫ฉันจะเพิ่มเครื่องหมายวงเล็บแทนเครื่องหมายอัฒภาคแล้วฉันจะย้ายรหัสที่เราได้ไปในการคว้า

46
00:03:26,890 --> 00:03:36,220
‫ดังนั้นเริ่มต้นที่บรรทัด 53 สำหรับฉันลงไปที่ 65 ฉันจะตัดมันทั้งหมดออก แล้วเราจะแทนที่มันด้วยบางอย่างในไม่กี่วินาที

47
00:03:36,370 --> 00:03:44,710
‫ฉันจะแปะมันเพื่อคว้าลูกบอลให้ได้ และเราได้ผลการตีที่เราสร้างขึ้น

48
00:03:44,710 --> 00:03:53,530
‫สิ่งที่เราสามารถทำได้คือเราสามารถกำหนดผลลัพธ์ของการโจมตีนั้นให้เท่ากับผลลัพธ์ของ Hit ที่เราได้รับที่นี่

49
00:03:53,620 --> 00:03:56,740
‫เราอาจต้องการทำเช่นนั้นถ้าเราตี

50
00:03:56,740 --> 00:04:05,440
‫ดังนั้นเราจึงสามารถใส่ได้ว่าถ้าคำสั่งถูกกดเช่นนั้นและห่อการมอบหมายนี้การตีออกไปยังผลการตีภายในคำสั่ง if จากนั้นเราสามารถดำเนินการต่อและเมื่อสิ้นสุดฟังก์ชัน

51
00:04:05,530 --> 00:04:23,260
‫just return has hit ดังนั้นตอนนี้จึงมี การปรับให้เหมาะสมหรือการปรับปรุงที่สามารถทำได้ที่นี่เพราะเรากำลังส่งผ่านไปยังช่องทางการกวาดและคว้าบอลที่เอื้อมถึงโดยการอ้างอิง

52
00:04:23,260 --> 00:04:28,960
‫เราไม่จำเป็นต้องสร้างผลลัพธ์ Hit ใหม่ที่นี่ แล้วคัดลอกลงในผลลัพธ์ Hit

53
00:04:28,960 --> 00:04:30,250
‫นั่นเป็นเพียงการสูญเสียความทรงจำ

54
00:04:30,820 --> 00:04:36,490
‫สิ่งที่เราทำได้คือเราสามารถลบผลการตีที่เรากำลังสร้างอยู่ภายใน คว้าลูกบอลให้เข้าถึง

55
00:04:36,490 --> 00:04:44,980
‫และแทนที่จะใช้การอ้างอิงที่เราได้ส่งผ่านเข้าไปเพื่อส่งโดยตรงไปยังการกวาดทีละช่อง

56
00:04:44,980 --> 00:04:50,440
‫ดังนั้นจึงเป็นการส่งต่อการอ้างอิงนี้ไปยังฟังก์ชันลงใน sweep single by channel โดยที่มันจะถูกเติมเข้าไป

57
00:04:50,440 --> 00:04:57,880
‫และนั่นทำให้ไม่จำเป็นต้องใช้ if statement ซึ่งทำให้ฟังก์ชันนี้อ่านเร็วขึ้นและง่ายขึ้นเล็กน้อย

58
00:04:57,880 --> 00:05:01,510
‫และอันที่จริงฉันไม่คิดว่าเราจำเป็นต้องมีตัวแปรในการจัดเก็บ

59
00:05:01,510 --> 00:05:03,790
‫เราสามารถไปข้างหน้าและกลับมา

60
00:05:03,790 --> 00:05:09,730
‫มันจะสะอาดกว่ามากในการส่งคืนผลลัพธ์ช่องการกวาดโลก

61
00:05:09,730 --> 00:05:17,050
‫ดังนั้นเราจึงส่งผลลัพธ์จากสิ่งนั้นกลับไปสู่การคว้าที่สามารถเข้าถึงได้หรือใครก็ตามที่เรียกมัน

62
00:05:17,050 --> 00:05:21,970
‫พูดถึงใครก็ตามที่เรียกมัน ตอนนี้เราต้องขึ้นไปคว้าของเรา

63
00:05:21,970 --> 00:05:24,670
‫เราจำเป็นต้องสร้างผลงานของเราที่ไหนสักแห่ง

64
00:05:24,670 --> 00:05:25,690
‫เราต้องสร้างมันขึ้นมาที่นี่

65
00:05:25,690 --> 00:05:28,150
‫ผลลัพธ์ของ Hit นี่คือสิ่งที่เรากำลังจะเติม

66
00:05:28,330 --> 00:05:38,320
‫จากนั้นเราจะสร้างตัวแปรบูลีนซึ่งจะเป็นชุดของ Hit ที่เท่ากับว่าสามารถคว้าได้

67
00:05:38,320 --> 00:05:43,240
‫และเราจะส่งต่อผลลัพธ์ของ Hit โดยการอ้างอิงที่เราต้องการ

68
00:05:43,240 --> 00:05:49,270
‫แล้วถ้าเราโดน เราจะดำเนินการโค้ดโลภ

69
00:05:49,270 --> 00:05:50,320
‫สิ่งที่ยอดเยี่ยม

70
00:05:50,320 --> 00:05:56,590
‫เราได้ย้ายบางอย่างไปยังฟังก์ชันเพื่อให้ฟังก์ชันการคว้านี้พอดีกับหน้าจอเดียว

71
00:05:56,590 --> 00:06:05,200
‫และเราได้ใช้พารามิเตอร์ออกมาอีกครั้ง คราวนี้สร้างฟังก์ชันสำหรับตัวเราเองที่ใช้พารามิเตอร์เหล่านี้อย่างจริงจัง

72
00:06:05,200 --> 00:06:07,270
‫แล้วพบกันใหม่ในวิดีโอหน้าครับ

