‫สวัสดีและยินดีต้อนรับ.
‫ในการบรรยายนี้ เราจะเรียนรู้เกี่ยวกับฟังก์ชันที่ไม่ได้อยู่ในพิมพ์เขียวระดับ
‫แต่ในชั้นเรียนพิมพ์เขียวเฉพาะ
‫สิ่งเหล่านี้เรียกว่าฟังก์ชันสมาชิกและมีความสำคัญอย่างยิ่งต่อการเขียนโปรแกรมเชิงวัตถุ
‫มาดูวิธีการทำงานกันเลย
‫ดังนั้นในฟังก์ชันโพรเจกไทล์วางไข่ ในพิมพ์เขียวระดับ เรามีโหนดจำนวนมากที่เกี่ยวข้องกับการเพิ่มแรงกระตุ้น
‫การได้รับทิศทางของแรงกระตุ้น และรับส่วนประกอบตาข่ายแบบคงที่
‫โหนดทั้งหมดเหล่านี้ใช้อินสแตนซ์โพรเจกไทล์ BP ในเชิงลึก
‫คงจะดีไม่น้อยถ้าเราสามารถนำรหัสทั้งหมดนี้และย้ายเข้าไปอยู่ในโพรเจกไทล์ BP เพื่อให้รหัสที่เกี่ยวข้องกับข้อมูลนั้นอยู่กับตัวข้อมูลเอง
‫นั่นคือจุดรวมของการเขียนโปรแกรมเชิงวัตถุ
‫ดังนั้นเราจึงสามารถกำหนดโปรแกรมเชิงวัตถุเป็นฟังก์ชันที่อาศัยอยู่กับข้อมูลที่พวกเขาจัดการ
‫แล้วมันทำงานอย่างไร?
‫เราจะสร้างฟังก์ชันในกรณีเฉพาะของสิ่งต่างๆ ได้อย่างไร
‫วิธีหนึ่งที่เราสามารถทำได้คือไปที่การเปิดคลาสโปรเจ็กไทล์ BP ของเรา และตรวจสอบให้แน่ใจว่าเราคลิกเปิดโปรแกรมแก้ไขพิมพ์เขียวฉบับสมบูรณ์
‫คุณจะเห็นว่าในตัวแก้ไขพิมพ์เขียวฉบับสมบูรณ์นี้มีบานหน้าต่างพิมพ์เขียวของฉันและส่วนฟังก์ชัน
‫ดังนั้นเรา สามารถกดลูกศรบวกที่นี่เพื่อสร้างฟังก์ชันใหม่ในคลาสโปรเจ็กต์ BP
‫และฉันจะตั้งชื่อฟังก์ชันนี้ พิมพ์ชื่อของคุณ และนี่พิมพ์ชื่อของคุณ
‫ฟังก์ชั่นควรทำอย่างนั้น
‫คุณจะเห็นว่าเรามีโหนดที่เริ่มการทำงานของฟังก์ชันนี้ เพื่อให้เราสามารถดึงพินการดำเนินการออกแล้วพิมพ์สตริงการพิมพ์
‫เลยจะพิมพ์ว่า.
‫สวัสดี
‫ไม่ใช่ชื่อของฟังก์ชันนี้ใช่ไหม
‫แต่เราจะจัดการให้เรียบร้อยภายในเวลาไม่กี่วินาที
‫สิ่งที่เรามีที่นี่เรียกว่าฟังก์ชันสมาชิก
‫ฟังก์ชันสมาชิกเป็นฟังก์ชันในคลาสที่มักถูกเรียกใช้ในอินสแตนซ์เฉพาะของคลาส
‫อย่าบอกนะว่าฉันจะโทรพิมพ์ชื่อคุณบนขีปนาวุธ BP ทั้งหมด
‫คุณต้องพูดว่า ฉันต้องการโทร พิมพ์ชื่อของคุณบน BP โพรเจกไทล์หมายเลขหนึ่ง หรือโพรเจกไทล์
‫BP ที่เพิ่งเกิด
‫ดังนั้นถ้าเราไปที่พิมพ์เขียวระดับของเรา สิ่งที่คุณต้องทำคือใช้การอ้างอิงที่ออกมาจากกระสุน
‫BP วางไข่
‫และจากการอ้างอิงนั้น คุณสามารถโทรพิมพ์ชื่อของคุณ และคุณจะเห็นว่ามันเชื่อมต่อกับโหนดอินพุตพิเศษที่เรียกว่า
‫Target โดยอัตโนมัติ
‫และแน่นอนว่าคุณต้องต่อหมุดการดำเนินการของคุณด้วยเช่นกัน
‫ฉันจะขอมันให้เกิดขึ้นหลังจากแรงกระตุ้นของโฆษณา
‫แต่สิ่งที่น่าสนใจเกี่ยวกับโหนดอินพุตเป้าหมายพิเศษนี้คือ ถ้าคุณไปที่โพรเจกไทล์ BP คุณจะเห็นการพิมพ์นั้น
‫ชื่อของคุณไม่มีโหนดอินพุตดังกล่าว
‫เกิดอะไรขึ้นที่นี่?
‫โดยปริยาย ฟังก์ชันสมาชิกใดๆ มีพารามิเตอร์ที่เป็นเป้าหมายปัจจุบันหรืออินสแตนซ์ปัจจุบัน
‫และคุณจะได้รับสิ่งนี้โดยคลิกขวาที่กราฟเหตุการณ์พิมพ์เขียวและพิมพ์ตัวเอง
‫และคุณจะเห็นว่ามีโหนดที่เรียกว่า get reference to self และมันสร้าง self node
‫แบบนี้
‫จากนั้นคุณสามารถใช้การอ้างอิงอ็อบเจ็กต์ตนเองนี้เพื่อรับคุณสมบัติใดๆ ของอ็อบเจ็กต์นี้โดยเฉพาะ
‫ดังนั้นถ้าเราต้องการทราบชื่อโพรเจกไทล์ BP ของเรา คุณสามารถดึงการอ้างอิงตนเองออกแล้วพิมพ์ชื่อที่แสดง
‫ซึ่งเราเคยทำมาก่อน
‫จากนั้นคุณสามารถเชื่อมต่อชื่อที่แสดงลงในสตริงการพิมพ์ของเรา
‫ตอนนี้เมื่อเราเล่นและยิงกระสุนใหม่ คุณจะเห็นว่ามันพิมพ์ชื่อกระสุน และคุณสามารถเห็นกระสุนใหม่ทุกอันที่ฉันสร้าง
‫ชื่อนั้นต่างออกไปเพราะตัวตนที่สมาชิกพูดถึง หน้าที่คือ ตัวตนที่แตกต่างกัน
‫ก็คือโพรเจกไทล์ที่แตกต่างกัน
‫ดังนั้นเราจึงได้เรียนรู้ว่าตัวเองเป็นโหนดที่มีอยู่ในฟังก์ชันสมาชิกซึ่งมักจะชี้ไปที่อินสแตนซ์ปัจจุบันที่เรากำลังใช้อยู่
‫จุดรวมของการดูฟังก์ชันสมาชิกตั้งแต่แรก เหตุผลที่เราเริ่มต้นก็เพราะโหนดเหล่านี้ในพิมพ์เขียวระดับ
‫ตำแหน่งที่เราได้รับสแตติกเมช เราได้เวกเตอร์ไปข้างหน้า แล้วเราเพิ่มแรงกระตุ้นให้กับสิ่งเหล่านี้
‫สิ่งเหล่านี้รู้สึกว่าควรอยู่บนโพรเจกไทล์ BP
‫และนั่นคือสิ่งที่ผมอยากท้าทายให้คุณทำ
‫นี่เป็นความท้าทายที่พัฒนาไปเล็กน้อย แต่เรากำลังเข้าสู่ช่วงท้ายของหัวข้อนี้
‫ดังนั้นฉันจะแนะนำคุณทีละขั้นตอน
‫ดังนั้นเราจะสร้างฟังก์ชันการเปิดตัว
‫ชินบนโพรเจกไทล์ BP
‫สร้างมันขึ้นมาบนโพรเจกไทล์ BP
‫ไปที่ปุ่มบวกนั้น
‫เพิ่มใหม่ ตั้งชื่อมัน เปิดตัว
‫จากนั้นตัดและวางโหนดจากพิมพ์เขียวระดับลงในฟังก์ชันที่สร้างขึ้นใหม่นี้ของคุณและตรวจดูให้แน่ใจว่าคุณได้เชื่อมต่อหมุดการดำเนินการและอื่น
‫ๆ
‫ตอนนี้คุณกำลังจะลองและคอมไพล์สิ่งนี้ซึ่งเราไม่ได้ทำบ่อยนักในพิมพ์เขียว แต่การคอมไพล์เพียงช่วยให้คุณตรวจสอบการสะกดคำเป็นหลัก
‫และตรวจสอบให้แน่ใจว่าไม่มีข้อผิดพลาดใดๆ ที่คอมไพเลอร์ Blueprint สามารถคาดการณ์ได้
‫วิธีที่คุณทำเช่นนี้คือคุณไปที่ปุ่มที่ด้านบนซ้ายและกดคอมไพล์ และหากมีข้อผิดพลาดใด ๆ ข้อผิดพลาดเหล่านี้จะปรากฏขึ้นที่ด้านล่างในบานหน้าต่างเล็ก
‫ๆ ที่เรียกว่าผลลัพธ์ของคอมไพเลอร์
‫คุณจะเห็นว่าฉันคอมไพล์สำเร็จแล้ว แต่ข้อผิดพลาดใดๆ จะปรากฏขึ้นที่นี่ และบางครั้งคุณจะได้รับสีแดงเล็กน้อยบนโหนดเพื่อระบุว่าข้อผิดพลาดอยู่ที่ไหน
‫และฉันต้องการดูว่าคุณสามารถลองและทำความเข้าใจว่าข้อผิดพลาดนั้นพูดอะไร และลองแก้ไขข้อผิดพลาดโดยใช้โหนดตัวเองใหม่ที่เราได้เรียนรู้มา
‫จากนั้นคุณต้องไปข้างหน้าและเรียกใช้ฟังก์ชันนั้นจากพิมพ์เขียวระดับโดยลากออกจากอินสแตนซ์เช่นเดียวกับที่เราทำสำหรับการพิมพ์ของเรา
‫โหนดตัวเองของคุณลากออกจากอินสแตนซ์ของโพรเจกไทล์ใหม่ที่สร้างขึ้นจากโหนดวางไข่และเรียกใช้ฟังก์ชันการเปิดตัว
‫หยุดวิดีโอชั่วคราวและไปกันเลย
‫ตกลง.
‫ยินดีต้อนรับกลับ.
‫ฉันจะไปที่โพรเจกไทล์ BP ของเรา กดปุ่มบวก ถัดจากฟังก์ชันในบานหน้าต่างพิมพ์เขียวของฉัน
‫แล้วพิมพ์ Launch เพื่อตั้งชื่อฟังก์ชันที่กลับไปที่พิมพ์เขียวระดับของเรา ตัดโหนดออก และเข้าไปใน
‫BP โพรเจกไทล์แล้วแปะเข้าไป
‫ตอนนี้ฉันต้องเชื่อมต่อการดำเนินการจากการเปิดตัวเพื่อเพิ่มแรงกระตุ้น และตอนนี้ฉันกำลังจะตี
‫คอมไพล์ และคุณเห็นว่าฉันได้รับข้อผิดพลาดบนตาข่ายแบบคงที่หรือได้รับโหนดตาข่ายแบบคงที่
‫และถ้าคุณดูในผลลัพธ์ของคอมไพเลอร์ มันบอกว่ามันใช้เป้าหมายที่ไม่ถูกต้อง
‫ดังนั้นการกำหนดเป้าหมายอินพุตนี้ที่นี่จึงไม่ถูกต้อง
‫อย่างที่ฉันแนะนำให้คุณทำคือคุณสามารถคลิกขวาและพิมพ์ตัวเองเพื่อรับการอ้างอิงถึงตัวเองแล้วนำตัวเองนั้นไปที่เป้าหมายแทน
‫ตอนนี้ ถ้าคุณกดคอมไพล์อีกครั้ง คุณจะเห็นว่าข้อผิดพลาดหายไปแล้ว และคอมไพล์สำเร็จแล้ว
‫เพราะสิ่งที่เกิดขึ้นคือตอนนี้สามารถรับส่วนประกอบตาข่ายแบบคงที่จากโพรเจกไทล์ปัจจุบันที่เรียกใช้ฟังก์ชันการเรียกทำงานนี้
‫ดังนั้นถ้าเรากลับไปที่พิมพ์เขียวระดับของเราตอนนี้ เราสามารถดึงพินเอาต์พุตจากตัวแสดงการวางไข่ของเรา และเราสามารถพิมพ์
‫Launch เพื่อเรียกใช้ฟังก์ชันการเปิดตัวของเรา
‫คุณสามารถเห็นพินการดำเนินการเชื่อมต่อโดยอัตโนมัติสำหรับฉันแล้วออกหลังจากฟังก์ชั่นเปิดตัว
‫เราสามารถเชื่อมต่อฟังก์ชันการพิมพ์ชื่อของคุณได้หากต้องการ แม้ว่าจะเป็นเพียงเพื่อจุดประสงค์ในการดีบักและสาธิต
‫และถ้าคุณทดสอบ คุณ จะเห็นว่ายังเปิดตัวได้สำเร็จ
‫ยกเว้นตอนนี้รหัสที่เกี่ยวข้องกับการปล่อยชีวิตบนโพรเจกไทล์เอง
‫สิ่งที่ดี
‫เราได้เรียนรู้เกี่ยวกับหนึ่งในแนวคิดหลักของการเขียนโปรแกรมเชิงวัตถุในฟังก์ชันสมาชิกของการบรรยายนี้
‫เจอกันใหม่ตอนหน้าค่ะ