‫สวัสดีและยินดีต้อนรับ.
‫ในการบรรยายนี้ เราจะเข้าถึงนักแสดงที่ทับซ้อนกันในสิ่งที่เรียกว่าอาร์เรย์
‫เพื่อที่เราจะสามารถพิมพ์นักแสดงที่เราเห็นในเล่มนี้จาก C++ ได้ทั้งหมด
‫มาดูวิธีทำกันเลยดีกว่า
‫เช่นเดียวกับการเปรียบเทียบครั้งก่อน สมมติว่าชนิดหรือตัวแปรเป็นกล่องที่เราใส่ค่า
‫ทีนี้ จะเกิดอะไรขึ้นถ้าเราไม่รู้ว่าต้องการจัดเก็บค่ากี่ค่า?
‫เราอาจสร้างตัวแปรมากมาย
‫หากเรารู้ว่าเราจะมีห้าตัว เราก็อาจสร้างตัวแปรห้าตัว
‫แต่ถ้าเรามีบางอย่างที่คาดเดาไม่ได้ เช่น จำนวนนักแสดงที่เรามีในระดับของเรา
‫หรือนักแสดงที่ซ้อนทับกับปริมาณทริกเกอร์โดยเฉพาะ
‫ในกรณีนี้ เราจำเป็นต้องใช้ชนิดข้อมูลใหม่ที่เรียกว่า T array ใน Unreal และโดยพื้นฐานแล้วคือ T array
‫บางประเภท
‫อีกครั้งที่เราเห็นวงเล็บมุมเหล่านี้ซึ่งก่อนหน้านี้เรากล่าวไว้ว่าเป็นพารามิเตอร์เวลาคอมไพล์
‫และคราวนี้เรากำลังพูดถึงประเภทที่บอกเราว่าประเภทใดที่เราสามารถเก็บไว้ในอาร์เรย์ของเราได้
‫อาร์เรย์เป็นเหมือนตัวแปร ยกเว้นว่ามันมีหลายกล่อง และจำนวนกล่องที่เรามีอาจแตกต่างกันไปเมื่อเราเล่นเกมของเรา
‫มันสามารถเปลี่ยนแปลงได้
‫เราสามารถเพิ่มมากขึ้นหรือน้อยลงเมื่อเราผ่านเกม
‫เมื่อสิ่งต่าง ๆ เริ่มซ้อนทับกัน เราจะเพิ่มกล่องเพิ่มเติมเมื่อสิ่งต่าง ๆ ออกจากโซนที่ทับซ้อนกัน
‫เราจะพาพวกเขาไป
‫และอย่างที่ฉันพูดไป นี่คือพารามิเตอร์ภายในพวกนี้
‫วงเล็บมุม
‫ดังนั้นเราจึงสามารถมีถาด int ได้ ตัวอย่างเช่น ซึ่งจะเก็บจำนวนเต็มต่างๆ ไว้ในกล่องเหล่านั้น
‫เราอาจมีถาดพอยน์เตอร์ของนักแสดง และนี่จะเก็บพอยน์เตอร์ไว้ในกล่อง
‫ซึ่งจะชี้ไปที่นักแสดงในโลก
‫และอย่างที่คุณเห็น พวกมันสามารถทับซ้อนกันได้
‫ดังนั้นบางตัวชี้เหล่านี้ชี้ไปที่นักแสดงคนเดียวกัน
‫ในทางปฏิบัติ มันไม่มีประโยชน์มากนัก แต่ก็เป็นไปได้อย่างแน่นอน
‫ดังนั้นฉันจึงต้องการทบทวนเอกสารประกอบขององค์ประกอบดั้งเดิม เพราะสิ่งที่ฉันกำลังมองหาที่นี่คือฟังก์ชันที่เรียกว่า
‫รับนักแสดงที่ทับซ้อนกัน
‫และถ้าคุณได้ดูฟังก์ชันนักแสดงที่ทับซ้อนกัน มีอยู่สองสามเวอร์ชัน
‫แต่สิ่งที่น่าสนใจที่สุดสำหรับฉันคืออันที่สอง
‫ไม่มีค่าส่งคืน เป็นค่าส่งคืนที่เป็นโมฆะ
‫แต่คุณจะเห็นว่าพารามิเตอร์แรกในที่นี้คืออาร์เรย์ t ของตัวชี้ตัวแสดงที่มีเครื่องหมายและต่อท้าย
‫หมายความว่าสิ่งทั้งหมดนี้อ้างอิงถึงอาร์เรย์ t
‫สังเกตว่ามันไม่ใช่การอ้างอิงคงที่ ดังนั้นเราสามารถสรุปได้ว่าพารามิเตอร์นี้เป็นพารามิเตอร์เอาต์จริง ๆ
‫มันให้ผลลัพธ์ของตัวแสดงที่คาบเกี่ยวกัน และมันบอกเราว่านักแสดงคนใดกำลังทับซ้อนกับองค์ประกอบดั้งเดิมของเรา
‫ตอนนี้มันเกิดขึ้นที่องค์ประกอบกล่องของเราเป็นส่วนประกอบดั้งเดิม
‫ดังนั้นองค์ประกอบทริกเกอร์ของเราจึงเป็นองค์ประกอบดั้งเดิมเช่นกัน
‫และใครบ้างที่จะสามารถเข้าถึงฟังก์ชั่นนี้ได้?
‫มีอาร์กิวเมนต์ที่สองอยู่ที่นี่ แต่เราไม่จำเป็นต้องกังวลเกี่ยวกับเรื่องนั้นเพราะมันมีค่าเริ่มต้นจริง
‫ๆ หากเราใช้
‫ไปข้างหน้าและลองจับและใส่ถาดพอยน์เตอร์ของนักแสดง
‫เราจะไปที่องค์ประกอบทริกเกอร์
‫CP เราจะลงไปที่องค์ประกอบติ๊ก
‫และในที่นี้ เราจะสร้างอาร์เรย์ t ว่าง ที่เราเติมได้โดยใช้ฟังก์ชันนี้
‫ไวยากรณ์คือ t อาร์เรย์ วงเล็บมุมเปิด ดารานักแสดง เพื่อบอกว่าเรามีตัวชี้นักแสดง t อาร์เรย์
‫ปิดวงเล็บมุม จากนั้นเราสามารถตั้งชื่อตัวแปรนี้เป็นนักแสดงได้
‫จากนั้นเราจะเรียกนักแสดงที่ทับซ้อนกันและเราจะผ่านอาร์เรย์นักแสดง
‫ตอนนี้.
‫ฉันไม่รู้ว่าทำไมพวกเขาไม่เพียงแค่ส่งสิ่งนี้ออกมาเป็นค่าตอบแทน แต่
‫ไปเลย
‫มันทำให้เรามีโอกาสใช้พารามิเตอร์เหล่านั้นเพิ่มขึ้นอีกเล็กน้อย
‫ตอนนี้ทุกอย่างดีและดี
‫เรามีนักแสดงอยู่ในแถว
‫มีความยาวผันแปรของมัน
‫อาจจะมีไม่มาก
‫อาจจะมีศูนย์
‫เราจะทำอย่างไรกับอาร์เรย์เช่นนี้?
‫เราสามารถสอบถามว่ามีกี่รายการในอาร์เรย์
‫คุณสามารถใช้อาร์เรย์ วงเล็บ dot num และสามารถคืนค่าจำนวนเต็มเพื่อบอกคุณว่ามีกี่รายการในอาร์เรย์
‫ดังนั้นในอาร์เรย์เฉพาะนี้ เราสามารถพูดได้ว่ามีห้ารายการ จากนั้นเราสามารถเข้าถึงรายการภายในอาร์เรย์นั้นได้โดยใช้วงเล็บเหลี่ยมเหล่านี้
‫จากนั้นหมายเลขที่คุณส่งเข้าไปในวงเล็บเหลี่ยมจะบอกคุณว่าต้องรับรายการใด
‫และเป็นเรื่องปกติในภาษาการเขียนโปรแกรมจำนวนมากที่เราเริ่มนับจากศูนย์ในอาร์เรย์
‫ดังนั้นองค์ประกอบที่ศูนย์ของอาร์เรย์จึงเป็นองค์ประกอบแรก องค์ประกอบหนึ่งของอาร์เรย์คือองค์ประกอบที่สอง เป็นต้น
‫ดังนั้นคุณจึงลงเอยด้วยองค์ประกอบสุดท้ายที่น้อยกว่าจำนวนองค์ประกอบในอาร์เรย์เสมอ
‫แล้วเราจะใช้ความรู้นี้ได้อย่างไร?
‫ตัวอย่างเช่น เราสามารถพิมพ์ตัวแสดงที่ทับซ้อนกันได้ก็ต่อเมื่อมีมากกว่าหนึ่งตัว
‫แล้วเราจะทำสิ่งนี้ได้อย่างไร?
‫เราจะใส่คำสั่ง if โดยบอกว่าถ้าวงเล็บ dot num ของนักแสดงมากกว่าศูนย์ เราก็สามารถทำบางสิ่งในนี้ เช่น เข้าถึงองค์ประกอบ
‫zero ของนักแสดงได้ เพราะเรารู้ว่าถ้ามากกว่า 0 จะต้องอยู่ที่ อย่างน้อยหนึ่งองค์ประกอบในนั้น
‫ดังนั้นองค์ประกอบที่ศูนย์ของอาร์เรย์นี้ต้องมีบางอย่างอยู่
‫เราไม่สามารถรับประกันได้ว่าอิลิเมนต์แรก อิลิเมนต์หนึ่งของอาร์เรย์มีข้อมูลอะไร หรือสองอิลิเมนต์มีอะไรอยู่
‫เราจะต้องตรวจสอบว่าเรามีรายการเพียงพอในอาร์เรย์หรือไม่เพื่อที่จะทำอย่างนั้น แต่เรารู้แน่นอนว่ามีรายการแรกอยู่ที่นี่
‫เรามาท้าให้คุณพิมพ์นักแสดงที่ทับซ้อนกันตัวแรกจากอาร์เรย์นั้น
‫ใช้อาร์เรย์เพื่อรับตัวชี้โดยใช้วงเล็บเหลี่ยมเหล่านั้น
‫จากนั้นคุณจะใช้ตัวชี้นั้นเพื่อโทร หานักแสดง ชื่อหรือป้ายกำกับ จากนั้นคุณจะพิมพ์ออกมา
‫หยุดวิดีโอชั่วคราวแล้วเริ่มกันเลย
‫เฮ้ ยินดีต้อนรับกลับมา
‫เราจะได้จับตัวชี้ไว้ตรงนี้ โดยใช้วงเล็บเหลี่ยมนี้
‫จากนั้นฉันจะเรียกชื่อตรงๆ โดยใช้ตัวดำเนินการลูกศร และเรียกชื่อนักแสดง
‫ชื่อหรือป้ายกำกับ
‫และฉันจะใส่มันลงในตัวแปรสตริง F ที่เรียกว่าชื่อนักแสดง
‫จากนั้นเราจะทำบันทึก U ซึ่งเราจะเรียกเครื่องหมายทวิภาคที่ทับซ้อนกัน
‫แล้วเปอร์เซ็นต์ s
‫แล้วอาร์กิวเมนต์ที่สองที่นี่ควรเป็นดอกจัน ชื่อนักแสดง
‫จากนั้นเราก็สามารถคอมไพล์ใหม่ กระโดดเข้าสู่ไฟล์บันทึกเอาต์พุตของเราในเลย์เอาต์
‫จากนั้นเราจะเปิดกำแพงลับของ BPP เพราะฉันไม่ต้องการพิมพ์สตริงนี้ที่สร้างความสับสน
‫ใน Blueprint เรากำลังดำเนินการนี้จาก C++ ดังนั้นเรามาดูเกมตีดันเจี้ยนระดับดันเจี้ยนกัน
‫และเห็นได้ชัดว่าไม่มีอะไรทับซ้อนกันของนักแสดงคนนั้นในตอนนี้
‫จะเกิดอะไรขึ้นถ้าเราเข้าไปข้างใน?
‫คุณจะเห็นว่าเครื่องเริ่มพิมพ์ทันที เรากำลังส่งเสียงบี๊บทับกัน
‫สิ่งที่ยอดเยี่ยม
‫ถ้าเราต้องไปเอาการ์กอยล์มาแทนล่ะ?
‫เอาไปไว้ที่ซุ้ม ติดมัน และไปที่นั่น
‫มันบอกว่าทับรูปปั้นกอบลิน
‫สิ่งที่ดี
‫ดังนั้นเราจึงได้เรียนรู้วิธีใช้อาร์เรย์ t เพื่อรับรายชื่อนักแสดง และค้นหาว่ามีกี่สิ่งในรายการนั้น
‫และวิธีรับรายการเฉพาะจากรายการนั้น
‫ในการบรรยายครั้งต่อไป เราจะดูโครงสร้างการเขียนโปรแกรมที่ช่วยให้เราสามารถจัดการกับจำนวนตัวแปรของสิ่งต่าง
‫ๆ เพื่อทำงานจำนวนตัวแปรได้
‫ฉันจะไปพบคุณที่นั่น.