‫ในการบรรยายนี้ เราจะรวบรวมตัวควบคุมผู้เล่นซึ่งจะได้รับข้อมูลว่าเกมได้จบลงแล้วจากโหมดเกม
‫และจะสร้างพฤติกรรมการรีสตาร์ทนี้ ซึ่งหลังจาก 5 วินาทีจะทำการรีโหลดระดับใหม่หลังจากที่ผู้เล่นเสียชีวิต
‫มาดูวิธีทำกันเลยดีกว่า
‫ดังนั้นเมื่อเกมจบลงจริงๆ เราจำเป็นต้องแจ้งผู้ควบคุมผู้เล่นของเรา และเราจำเป็นต้องมีตัวควบคุมผู้เล่นใน
‫C++ ของเราด้วย เพื่อให้เราสามารถปรับใช้พฤติกรรมที่อนุญาตให้เราเริ่มระดับใหม่ได้
‫สิ่งแรกที่ต้องทำคือ เมื่อจุดนี้ถูกฆ่า อย่างแรกเลย เราแค่เข้าสู่ระบบโดยไม่เลือกปฏิบัติ
‫เราต้องการตรวจสอบว่าเกมจบลงหรือไม่
‫ตอนนี้มีสองสถานการณ์
‫หนึ่งคือที่ที่เราชนะ และอีกหนึ่งคือที่ที่เราแพ้
‫การแพ้คือคนแรกที่ฉันจะจัดการเพราะมันง่ายที่สุด
‫ถ้าจำนำที่ฆ่าคือผู้เล่นที่คุณแพ้ก็เท่านั้น
‫คุณอาจเลือกที่จะมีหลายชีวิตด้วยการทำซ้ำที่แตกต่างกันของโหมดเกมนี้ แต่ฉันจะไม่ทำอย่างนั้น
‫ฉันจะมีชีวิตโสด
‫ถ้าคุณตาย เกมจะจบ
‫คุณอาจต้องการเริ่มต้นใหม่
‫เราจะตรวจสอบได้อย่างไรว่าจำนำนี้เป็นตัวควบคุมผู้เล่นหรือไม่?
‫นั่นค่อนข้างตรงไปตรงมา
‫เราสามารถทำการร่ายได้ ดังนั้นเราจะทำการร่ายให้กับผู้เล่นที่ควบคุมและสำหรับการจำนำที่ถูกฆ่า
‫แล้วถ้านี่ไม่ใช่โมฆะ
‫ลองใช้พอยน์เตอร์ ตัวชี้คอนโทรลเลอร์ของผู้เล่น เรียกมันว่าคอนโทรลเลอร์ของผู้เล่น และเก็บผลลัพธ์ของพอยน์เตอร์นั้นไว้ที่นี่
‫และเราจะบอกว่าโดยพื้นฐานแล้วถ้านี่ไม่ใช่โมฆะ ดังนั้นถ้าตัวควบคุมของผู้เล่นไม่ใช่ตัวชี้ null เราก็รู้ว่าเป็นผู้เล่นที่เสียชีวิตและเกมจบลงสำหรับผู้เล่น
‫สิ่งที่เราต้องทำคือเรียกใช้วิธีการควบคุมเครื่องเล่นนั้น
‫เราได้บอกใบ้แล้วว่ามีวิธีสิ้นสุดเกม
‫ลองมาดูที่นี้
‫ถ้าเราทำการควบคุม P และดูที่ตัวควบคุมผู้เล่นและเราจะมองหาเกมที่สิ้นสุดและคุณสามารถเห็นได้ว่ามีวิธีการเสมือนที่นี่เรียกว่าเกมสิ้นสุดแล้วและคุณจะเห็นว่ามีจุดจบ
‫โฟกัสเกม
‫เราควรให้ความสำคัญกับนักแสดงคนใดในตอนจบเกมโดยค่าเริ่มต้น นี่คือตัวชี้ว่างและนั่นอาจเป็นสิ่งที่เราจะใช้
‫แล้วเราจะพูดว่า นี่คือผู้ชนะหรือไม่?
‫โดยพื้นฐานแล้ว คุณต้องให้ผู้เล่นควบคุมและรู้ว่าพวกเขาชนะหรือไม่
‫และนั่นค่อนข้างตรงไปตรงมาที่จะพูดในกรณีนี้
‫ไม่ พวกเขาไม่ได้
‫ดังนั้นเราจะทำ play controller เกมลูกศรได้จบลงแล้ว ฉันจะใส่ null pointer สำหรับ end game
‫focus เพราะเราไม่ต้องการคุณสมบัตินั้นจริงๆ แล้วก็เป็นผู้ชนะ
‫มันก็แค่จะเป็นเท็จ
‫นี่ไม่ใช่ตัวควบคุมการเล่นที่ชนะเพราะเป็นตัวควบคุมที่เพิ่งตาย
‫ดังนั้นถึงเวลาท้าทายเล็กน้อยที่คุณจะนำไปปฏิบัติ
‫เกมจบลงด้วยตัวควบคุมการเล่น
‫นั่นหมายความว่าเราจำเป็นต้องสร้างตัวควบคุมสำหรับผู้เล่น C++ สร้างคลาสย่อยพิมพ์เขียว เรียกคลาสย่อยพิมพ์เขียวนั้นโดยค่าเริ่มต้นจากโหมดเกมของเรา
‫จากนั้นคุณต้องการดำเนินการต่อและแทนที่
‫เกมจบลงแล้วและใส่ข้อความเข้าสู่ระบบเพื่อตรวจสอบว่าเราได้รับจริงหรือไม่
‫เกมนั้นจบลงในเวลาที่เหมาะสม
‫หยุดวิดีโอชั่วคราวและไปกันเลย
‫ตกลง.
‫ยินดีต้อนรับกลับ.
‫ขั้นตอนที่หนึ่ง สร้างตัวควบคุมเครื่องเล่น C++ สร้างคลาส C++ ใหม่ จากนั้นไปดูกัน ตัวควบคุมเครื่องเล่น
‫ต่อไป เราจะเรียกสิ่งนี้ว่าตัวควบคุมผู้เล่นยิงปืน
‫ไปข้างหน้าและสร้างชั้นเรียนนั้น
‫เมื่อเสร็จแล้ว เราต้องการไปที่พิมพ์เขียวของเราและสร้างคลาสพิมพ์เขียวที่ยึดตามนั้น
‫ดังนั้นเราจึงต้องการให้ตัวควบคุมผู้เล่นยิงเป็นฐานเลือกนั้นและเราจะเรียกมันว่าบี๊บขีดล่างตัวควบคุมผู้เล่นยิงปืน
‫สิ่งนี้ไม่จำเป็นจริงๆ ในขณะนี้ แต่ในระยะหลัง เราจะต้องการเชื่อมต่อเนื้อหา UI บางส่วนกับตัวควบคุมเครื่องเล่นนี้
‫ดังนั้นเราจะเตรียมมันไว้ที่นั่น
‫จากนั้นเราจะไปที่เสียงบี๊บ เพิ่มโหมดเกมและเชื่อมต่อเพราะเราต้องการเปลี่ยนคลาสคอนโทรลเลอร์ของผู้เล่นเริ่มต้นจากคอนโทรลเลอร์ของผู้เล่นเป็นบี๊บขีดล่างของเรา
‫เย็น.
‫จากนั้นเราต้องการแทนที่เกมของเราได้จบลงแล้ว
‫ลองดูว่าเราไปที่ตัวควบคุมเครื่องเล่นหรือไม่
‫เราจะเห็นว่าสิ่งนี้อยู่ในส่วนสาธารณะ
‫นี่คือลายเซ็น
‫มาคัดลอกกัน
‫ไปที่ตัวควบคุมการเล่นปืนของเรา H และสร้างสาธารณะ
‫สำหรับเกมโมฆะเสมือนนั้นได้จบลงแล้ว
‫เย็น.
‫และเราได้ลบล้างไปแล้วเพราะเห็นได้ชัดว่ามีการแทนที่จากที่ใดที่หนึ่งไปยังอีกที่หนึ่ง
‫แล้วสิ่งที่เราสามารถทำได้คือเราสามารถดำเนินการต่อไปได้
‫ควบคุมกะ p เราต้องการเรียกให้จำสุดยอด
‫และเราต้องการให้เกมจบลงเช่นนั้น
‫และเราต้องการที่จะผ่านโฟกัสท้ายเกมและ B เป็นผู้ชนะ จากนั้นเราต้องการบันทึก
‫ดังนั้นคุณเข้าสู่ระบบ
‫ใช้มาโครของฉันที่นั่น
‫เราเสร็จแล้ว
‫มันจะเป็นข้อความบันทึกที่ออกมาในตอนท้าย
‫ลองรวบรวมและดูว่าใช้งานได้หรือไม่
‫เราจะไปที่บันทึกผลลัพธ์
‫ตีเล่นไปและได้รับการฆ่า
‫สุขภาพโดยทั่วไปจะลดลงอย่างช้าๆ แล้วเราควรจะเห็นข้อความ
‫เราได้รับข้อความหรือไม่
‫เลขที่
‫มาดูกันเลย
‫ตัวควบคุมผู้เล่นที่นี่คืออะไร?
‫Beep ขีดเส้นใต้ตัวควบคุมผู้เล่นยิงปืนดูเหมือนจะเป็นตัวควบคุมที่ถูกต้อง
‫เรามีการแทนที่เกมของเราได้สิ้นสุดลงแล้ว
‫ตอนนี้ฉันพบข้อผิดพลาดที่นี่
‫นี่คือสิ่งที่พวกคุณบางคนอาจสังเกตเห็นและเคยบ่นถึงหน้าจอว่า
‫เรามีส่วนควบคุมผู้เล่นที่เรากำลังแคสต์อยู่ และฉันกำลังสับสนกับตัวจริงของผู้เล่น
‫--
‫สิ่งที่เราอยากทำที่นี่คือเราอยากจะบอกว่าให้เอาตัวควบคุม -- ที่ถูกฆ่าตาย
‫ดังนั้น -- ฆ่า dot get controller Aron ดังนั้น arrow ได้ controller แล้วเราอยากโยนมันไปที่ controller ของผู้เล่น
‫และถ้ามันเป็นโมฆะ โอเค นั่นน่าจะใช้ได้
‫เลยลองไปทำกันดู
‫ไปข้างหน้าและกดเล่น
‫ฆ่าตัวตายอีกแล้ว
‫และครั้งนี้เรายังไม่ได้รับข้อความบันทึกใดๆ
‫และคราวนี้ก็ด้วยเหตุผลที่ละเอียดอ่อน
‫นั่นเป็นเพราะเรากำลังถอดคอนโทรลเลอร์
‫ก่อนที่เราจะเรียกสิ่งนี้ว่า -- ฆ่า
‫ดังนั้นเมื่อมันพยายามที่จะควบคุม -- ที่จริงแล้วเป็นโมฆะ ไม่มีการควบคุม -- อีกต่อไป
‫ดังนั้นเราจึงต้องทำการแจ้งเตือนนี้ก่อนที่เราจะทำการถอดออกจากคอนโทรลเลอร์
‫ซึ่งรวมถึงการย้ายขึ้นบรรทัดที่ได้รับโหมดเกมของเรา
‫ฉันไม่คิดว่ามันจะสำคัญ
‫แต่ตอนนี้ฉันคิดเกี่ยวกับมันแล้ว ใช่ แน่นอน มันเป็นเช่นนั้น
‫ไปที่ระดับของเราและเล่นกัน
‫ไปยิงกันเลยครับ.
‫และเมื่อทำเสร็จแล้ว คุณจะเห็นว่าเราพิมพ์เสร็จแล้วตามที่เราต้องการ
‫ดังนั้นเราจึงมีอาการสะอึกเล็กน้อยระหว่างทาง
‫ไม่ใช่ความผิดของคุณหากคุณไม่ได้รับสิ่งนั้นในการท้าทาย
‫คุณได้ทำทุกอย่างจนถึงจุดนั้นแล้ว
‫เป็นสิ่งที่ดี.
‫หวังว่าบางทีคุณอาจลองแก้ไขจุดบกพร่องนั้น แต่อย่ากังวลหากคุณติดอยู่กับสิ่งเหล่านั้น
‫สิ่งสุดท้ายที่ฉันต้องการทำที่นี่คือรีสตาร์ทเกมด้วยตัวจับเวลา
‫วิธีที่เราสามารถทำได้ค่อนข้างตรงไปตรงมาเพราะตัวควบคุมเครื่องเล่นมีวิธีการรีสตาร์ทจริง
‫ๆ
‫ดังนั้นถ้าเราไปดูเรื่องนี้ก็ควรจะเป็นระดับเริ่มต้นใหม่
‫นั่นคือสิ่งที่เราต้องการโทรหาและเราต้องการที่จะทำเช่นนี้ในเวลา
‫ดังนั้น เราจึงเคยใช้ตัวจับเวลามาก่อนในการทำสิ่งซ้ำๆ แต่เราสามารถใช้มันเพื่อชะลอการกระทำได้เพียงระดับหนึ่งเท่านั้น
‫ฉันจะไปที่ตัวควบคุมผู้เล่นมือปืน H และสร้างทรัพย์สินส่วนตัวที่นี่
‫ส่วนตัวสามารถเป็นทรัพย์สินของคุณซึ่งแก้ไขได้ทุกที่
‫ลอย.
‫นั่นจะเป็นการหน่วงเวลาการรีสตาร์ท
‫คุณจะเห็นได้ว่าเหตุใดเราจึงต้องการฐานพิมพ์เขียวสำหรับสิ่งนี้อยู่แล้ว
‫ฉันจะให้มันล่าช้า 5/2
‫จากนั้นฉันจะไปที่ C ++ และเราต้องการรับตัวจัดการตัวจับเวลาโลก
‫แล้วเราก็สามารถทำได้
‫แล้วเราต้องรวม
‫รวมแฮชและมันจะเป็นตัวจัดการเวลา
‫H จากนั้นเราควรจะใช้ตัวดำเนินการ DOT ได้เพราะประเภทการส่งคืนที่นี่เป็นข้อมูลอ้างอิงและเราจะทำการตั้งเวลาและในนี้เราต้องผ่านตัวจับเวลา
‫มาสร้างส่วนส่วนตัวกันเถอะ
‫มันจะเป็นที่จับตัวจับเวลา F ฉันจะเรียกมันว่าตัวจับเวลาการรีสตาร์ทเช่น
‫นั่นจะเป็นที่จับที่เราส่งผ่านไปยังตัวจับเวลาที่ตั้งไว้
‫สิ่งต่อไปที่เราต้องการในลายเซ็นที่ห้าที่นี่คือ จริงๆ แล้วมีวัตถุที่เราต้องการเรียก ซึ่งก็จะเป็นนี่เท่านั้น
‫แล้วก็จะมี ฉันคิดว่าควรจะเป็นเพียงแค่วิธีการเอง
‫เราก็ทำได้โดยใช้เครื่องหมายแอมเพอร์แซนด์
‫แล้วมันก็คือเมธอด ซึ่งเป็นเมธอดระดับรีสตาร์ท ซึ่งเราอยากจะเรียกนั้นถูกกำหนดไว้ในคอนโทรลเลอร์
‫A ของผู้เล่น
‫ดังนั้นตัวควบคุมผู้เล่น
‫คัลเลน
‫Cullen ระดับเริ่มต้นใหม่แล้วเราก็ต้องผ่านความล่าช้าที่เราได้กำหนดไว้แล้วว่าเป็นการหน่วงเวลาการรีสตาร์ท
‫ทำเช่นนั้น ใส่เครื่องหมายอัฒภาคต่อท้าย และหวังว่าเราจะเริ่มต้นใหม่อีกครั้งหลังจาก
‫5 วินาที
‫ตอนนี้จะทำให้การทดสอบง่ายขึ้นเล็กน้อยโดยเปิดปืนไรเฟิลของเราและทำให้ถึงตายมากขึ้นอีกนิด
‫ฉันจะไปที่ค่าเริ่มต้น ทำดาเมจที่ 50 ดังนั้นเราจะตายด้วยการยิงสองนัด
‫ไปตีกันเล่นๆ
‫ฆ่าตัวตายเร็วเข้า
‫และหลังจากนั้น 5 วินาที หวังว่าเราควรจะเริ่มต้นระดับที่เราเริ่มต้นใหม่และเรากลับเข้าสู่ระดับ
‫ดังนั้นตัวจับเวลาของเราจึงทำงานตามที่เราคาดไว้
‫ในเวอร์ชันที่ใหม่กว่า คุณจะพบว่าแทนที่จะเริ่มต้นใหม่ สิ่งที่คุณจะเห็นคือข้อความแสดงข้อผิดพลาดที่มีลักษณะดังนี้
‫และพูดถึงความล้มเหลวในการเดินทางและพูดบางอย่างเกี่ยวกับ UUID, PID, sandbox, blah blah blah
‫วิธีที่เราต้องแก้ไขเมื่อเราพยายามรีสตาร์ทและต้องการตรวจสอบว่าการรีสตาร์ทของเราทำงานหรือไม่
‫คือเราไปที่ dot, dot, dot menu แทนเมนู play และเราต้องเล่นเป็น เกมแบบสแตนด์อโลน
‫หากคุณเล่นเกมแบบสแตนด์อโลน อาจใช้เวลานานขึ้นเล็กน้อยในการเปิดเครื่อง
‫แต่การรีสตาร์ทจะทำงานตามที่คาดไว้
‫และเราเห็นระดับโหลดใหม่
‫เห็นได้ชัดว่าไม่มีข้อบ่งชี้มากนักว่าสิ่งนี้กำลังจะเกิดขึ้น
‫ดังนั้นเราจะมาดู UI ในการบรรยายครั้งต่อไป
‫ฉันจะไปพบคุณที่นั่น.