‫สวัสดีและยินดีต้อนรับ.
‫ในการบรรยายนี้ เรากำลังจะทำให้เงื่อนไขการชนะทำงาน เพื่อที่ฉันจะได้ฆ่าศัตรูทั้งหมดในระดับของฉัน
‫และมันจะแสดงให้ฉันเห็นกระจกหน้ารถนี้
‫เย่!
‫มาดูวิธีทำกันเลยดีกว่า
‫ดังนั้นเราจึงต้องการให้ผู้เล่นของเราชนะเกมนี้ได้อย่างแท้จริง
‫ในขณะนี้พวกเขาไม่สามารถ
‫แล้วเราจะทำอย่างนั้นได้อย่างไร?
‫คุณสามารถทำได้หลายวิธี
‫หนึ่งในนั้นคือเมื่อ Pawn Killed ถูกเรียกและตัวจำนำไม่ใช่ตัวควบคุมของผู้เล่น แต่เป็น AI
‫เราสามารถลบออกจากตัวแปรที่บอกว่ามี AI กี่ตัวในโลก เราต้องฆ่ากี่ตัว
‫และเมื่อค่านั้นลดลงเหลือ 0 เราก็สามารถจบเกมให้ผู้เล่นได้เปรียบ
‫อย่างไรก็ตาม ฉันคิดว่ามันเปราะบางนิดหน่อย เพราะมันต้องการให้เราใส่จำนวนศัตรูที่มีในโลกไว้ในสองที่
‫โดยพื้นฐานแล้ว มันจะต้องอยู่ในโหมดเกม แต่ก็จำเป็นต้องอยู่ในโลกด้วยเมื่อคุณวางศัตรูลง
‫และทั้งสองสามารถหลุดจากซิงค์ได้ และนั่นจะทำให้เกิดปัญหาบางอย่าง
‫วิธีที่ผมอยากทำคือพูดง่ายๆ ว่า ให้นับศัตรูทั้งหมดในโลกทุกครั้งที่จำนำถูกฆ่า
‫มานับใหม่ นับหัวของ AI ทั้งหมด แล้วดูว่าตัวไหนยังมีชีวิตอยู่ .
‫หากพวกเขายังมีชีวิตอยู่ เราก็จะไม่จบเกม
‫โดยพื้นฐานแล้ว เกมยังไม่จบ แต่ถ้าพวกเขาตายทั้งหมดและตัวควบคุมการเล่นยังไม่จบ
‫แสดงว่าผู้เล่นเป็นฝ่ายชนะ
‫ดังนั้นเพื่อให้เราทำสิ่งนี้ได้ เราจำเป็นต้องมีวิธีสอบถามตัวควบคุมของผู้เล่นว่าตัวเกมตายหรือไม่
‫ขออภัย ฉันหมายถึงตัวควบคุม AI
‫ลองมองหามือปืนของเรากัน
‫ตัวควบคุม AI
‫และสิ่งที่เราต้องการที่จะทำที่นี่คือการสร้างวิธีการสาธารณะใหม่ที่ช่วยให้เราสามารถสอบถามว่ามันตายหรือไม่
‫ดังนั้นเราจะทำลูกบอลโดยพื้นฐานแล้วตายและมันจะเป็นการแข่งขันเพราะมันไม่ควรเปลี่ยนสิ่งที่เกิดขึ้นจริงในตัวควบคุมเมื่อมีการเรียก
‫และเราสามารถดำเนินการต่อไปได้
‫ตอนนี้เราควรควบคุม a -- ที่สามารถบอกเราได้ว่ามันตายหรือไม่
‫ถ้าเรากลับไปดูอีกครั้ง เราจะดูที่ตัวละครที่ยิงกัน ซึ่งก็คือ --
‫จำไว้ว่าเรามีอยู่แล้วนี่ตายไม่สามารถทำงานได้ที่นั่น
‫โดยพื้นฐานแล้วสิ่งที่เราต้องการทำคือส่งคำขอไปยังมือปืนที่ฉันควบคุมตอนนี้
‫ใช่.
‫สิ่งหนึ่งที่คุณสามารถพูดได้ในโหมดเกม KML คุณสามารถจับคอนโทรลเลอร์
‫จับ - ตัวที่ควบคุม แคสต์แล้วตรวจสอบว่ามันตายแล้วหรือไม่
‫อย่างไรก็ตาม โดยทั่วไปแล้วนั่นไม่ใช่แนวทางปฏิบัติที่ดีที่สุด เพราะมันหมายความว่าหากมีบางอย่างเปลี่ยนแปลงไปเกี่ยวกับวิธีที่เราคำนวณความตาย
‫และหรือตัวควบคุม AI จะควบคุมประเภทต่างๆ -- จู่ๆ เราก็ต้องไปเปลี่ยนโหมดเกม ซึ่งไม่เป็นเช่นนั้น มีเหตุผล
‫ดังนั้นควรทำสิ่งนี้และส่งต่อภายในการควบคุม AI ให้แข็งแกร่งยิ่งขึ้น
‫มันหยุดเราไม่ให้เล่นซอไปมาภายในชั้นเรียนของคนอื่น ซึ่งโดยทั่วไปหมายความว่าเราสามารถจำกัดเมื่อสิ่งต่าง
‫ๆ เปลี่ยนไป เราสามารถจำกัดจำนวนคลาสที่เราต้องไปสัมผัส อัปเดต และเปลี่ยนแปลง ซึ่งเป็นสิ่งที่ดีเสมอ
‫ดังนั้นสิ่งที่เราจะทำคือรับ -- และโยน -- เพื่อให้แน่ใจว่าเป็นตัวละครที่ยิง
‫มาทำแคสต์กัน
‫มันจะไปเป็นมือปืน
‫อักขระ.
‫และฉันคิดว่าเราจะต้องรวมแฮชไว้ด้านบนสุดของการควบคุมการมองเพื่อให้แน่ใจว่าเรารู้เกี่ยวกับตัวละครที่ยิงแบบนั้น
‫จากนั้นเราจะทำการแคสต์ให้ได้ -- และเราต้องการเก็บสิ่งนี้ไว้ในตัวแปร ดังนั้นมันจะเป็นตัวยิง
‫ตัวชี้อักขระที่เรียกว่า เรียกมันว่าควบคุม
‫อักขระ.
‫ฉันไม่สามารถเรียกมันว่าตัวละครได้เพราะนั่นเป็นตัวแปรบนตัวควบคุม AI แล้วและใส่เครื่องหมายอัฒภาคที่ท้ายบรรทัดแล้วเราจะตรวจสอบว่านี่เป็นโมฆะหรือไม่
‫ดังนั้นอักขระควบคุมจึงไม่เท่ากับตัวชี้ค่า null จากนั้นเราควรจะสามารถสืบค้นสถานะของมันได้ว่ามันตายหรือไม่
‫ดังนั้นเราควรจะสามารถคืนตัวละครที่ควบคุมนั้นได้
‫ตายแล้ว.
‫โดยพื้นฐานแล้ว เราส่งต่อคำขอเพื่อควบคุมตัวละครหากตัวละครควบคุมนั้นเป็นตัวละครยิง
‫อย่างไรก็ตาม โปรดทราบว่าเราไม่มีใบแจ้งยอดส่งคืน
‫ในอีกกรณีหนึ่ง เราจำเป็นต้องมีคำสั่ง return ที่จำเป็นต้องมีการ return เสมอ ถ้าค่าที่ส่งคืนนั้นไม่ถือเป็นโมฆะ
‫ดังนั้นเราจึงจำเป็นต้องใส่คำสั่ง return ออกมานอกคำสั่ง if เพื่อจับกรณีที่เรายังไม่ได้ส่งคืนภายในคำสั่ง
‫if
‫และที่นี่เราจะบอกว่า ตัวละครตัวนี้ตายแล้วหรือไม่?
‫ครับ จริงๆ แล้ว ถ้ามันไม่จริง แสดงว่าตายไปแล้ว
‫ถ้าเราไม่มีโรงรับจำนำ ถ้าเราไม่ได้ควบคุมโรงรับจำนำ ตัวควบคุมนี้ก็ดีพอๆ กับที่ตายไปสำหรับเรา
‫และนั่นอาจเกิดขึ้นได้เพราะจำไว้ว่าตัวจำนำจะหลุดออกจากตัวควบคุม AI เมื่อมันตาย
‫ดังนั้นเราจะกลับไปที่โหมดเกมและเราจะทำอะไรที่นี่?
‫โดยพื้นฐานแล้วสิ่งที่เราต้องการจะทำคือ for วนรอบ I the shooter A ทั้งหมด ฉัน..
‫ในโลก.
‫และด้วยสิ่งนั้นสำหรับลูป
‫เราต้องการทำอะไร?
‫เราต้องการที่จะเห็นความตาย
‫โดยทั่วไปและหรือโดยพื้นฐานแล้วยังไม่ตาย
‫และถ้าตัวใดยังไม่ตาย เราก็รู้ได้ทันทีว่าไม่ต้องตรวจตาเลย
‫ถ้าแม้แต่ A ตัวเดียว ฉัน. ยังมีชีวิตอยู่จากนั้นเกมก็ไม่จบ
‫ดังนั้นเราจึงสามารถทำสิ่งที่เรียกว่าการกลับมาก่อนกำหนด ซึ่งคุณอาจเคยเห็นมาก่อน
‫ซึ่งกำลังจะออกจากฟังก์ชันนี้โดยไม่ต้องรันโค้ดในนั้นอีก
‫ดังนั้นทุกอย่างหลังจากการกลับมาก่อนหน้านี้จะหยุดดำเนินการ for loop จะหยุดดำเนินการใดๆ
‫หลังจากที่จะหยุดดำเนินการ
‫แต่แล้วเราสามารถพูดได้ว่าถ้าเราจัดการให้สำเร็จลุล่วงโดยไม่ได้กลับมาก่อนกำหนด หมายความว่าไม่มี
‫A ที่ยังมีชีวิตอยู่ ฉัน. ในโลกแล้วเราต้องไปข้างหน้าและจบเกม
‫ง่ายๆ อย่างนั้น
‫ตอนนี้ ส่วนหนึ่งของปริศนาที่เราต้องดูในที่นี้คือเกมจบ
‫เพราะเกมของเราได้จบลงที่ส่วนควบคุมของผู้เล่น
‫มาดูกันว่าตัวควบคุมผู้เล่นเกมยิงจัดการกับสิ่งนี้อย่างไร
‫ถ้าเราไปที่ CP ของมัน สิ่งที่เราเห็นในตอนนี้คือมันกำลังละเลย B ทั้งหมดคือผู้ชนะ กำลังละเลยว่ามันเป็นผู้ชนะหรือไม่
‫สิ่งที่เราต้องทำคือบอกว่าถ้า B เป็นผู้ชนะ
‫แล้วเราจะไปทำอย่างอื่น
‫เรากำลังจะแสดงหน้าจอเสียของเรา
‫ดังนั้นตัดบรรทัดเหล่านี้ที่นี่ที่รับผิดชอบในการแสดงหน้าจอที่เสีย
‫ใส่สิ่งนั้นในคำสั่ง alt และเราจะเริ่มต้นใหม่ในทั้งสองกรณีต่อไป
‫ปัจจุบัน B เป็นผู้ชนะ
‫เรากำลังจะทำอะไร?
‫เรากำลังดำเนินการต่อไป และอาจสร้างม่านบังลมด้วย ซึ่งค่อนข้างตรงไปตรงมา
‫เราไปที่ไฟล์ส่วนหัวของเราสำหรับตัวควบคุมผู้เล่นยิง
‫เราสามารถทำซ้ำคลาสหน้าจอที่เสียของเราและสร้างคลาสหน้าจอชนะได้ที่นี่
‫เรายังสามารถไปข้างหน้า
‫และที่จริงแล้ว นี่เป็นความท้าทายเล็กๆ น้อยๆ สำหรับคุณ
‫บางทีไปข้างหน้าและตั้งค่าเพื่อให้สามารถทำกระจกหน้ารถได้
‫ตกลง.
‫ยินดีต้อนรับกลับ.
‫หวังว่าคุณคงทำสำเร็จแล้ว
‫เราจะเข้าไปใส่กระจกบังลมที่นี่แทนของที่เสียไปทั้งหมดและคัดลอกอย่างอื่นเป็นหลัก
‫เช่นนั้น
‫เราจะดำเนินการต่อไปและรวบรวมสิ่งนี้ จากนั้นไปที่ตัวแก้ไขและพบว่าตัวเองเป็นคลาสคอนโทรลเลอร์ของผู้เล่น
‫และตอนนี้เราควรเห็นว่ามีกระจกบังลมว่างอยู่ และสิ่งที่เราจะทำคือไปที่ UI
‫และฉันจะจำลองหน้าจอที่หายไปเพื่อเรียกกระจกบังลม และคุณสามารถสร้างกระจกบังลมของคุณเองได้หากต้องการ
‫ถึง.
‫แต่ฉันจะใช้มันในลักษณะเดียวกัน เว้นแต่ฉันจะเปลี่ยนสีเป็นสีเขียว
‫และทำให้มันเป็นคุณชนะแทนที่จะเป็นคุณแพ้
‫เนื่องจากตรรกะการรีสตาร์ทจะมีประสิทธิภาพเหมือนเดิม
‫เหตุผลบางอย่างมันรีเซ็ตสีของฉันที่นั่น
‫เดี๋ยวจะไปปรับเป็นสีเขียวใหม่
‫โอเค มันเยี่ยมมาก
‫แต่เรายังมีโค้ดหลอกจำนวนมากในโหมดเกม KML ที่ยังไม่ได้กรอก
‫และนั่นเป็นเพราะมันเป็นความท้าทายของคุณในการคำนวณการชนะ
‫กรอกรหัสเทียม
‫ใช้ T เพื่อช่วงจากด้านล่างในชั้นเรียนนั้นเพื่อช่วยคุณ
‫ใช้ฟังก์ชัน is dead ใหม่ที่เราสร้างขึ้นบนคอนโทรลเลอร์และทดสอบ
‫ดูว่ากระจกบังลมของคุณปรากฏขึ้นเมื่อคุณฆ่า AI ทั้งหมดในโลกหรือไม่
‫ดังนั้นเพียงแค่ปล่อยให้มันอยู่กับรหัสหลอกบนหน้าจอของคุณเพื่อให้คุณได้ดู
‫เค ยินดีต้อนรับกลับ
‫เรามาเริ่มกันที่ for loop กันก่อน
‫เราจะทำสี่
‫เราจะวนลูปเพื่ออะไร?
‫ตอนนี้ไม่ใช่ผู้ควบคุม
‫มันจะเป็นตัวควบคุม AI ของนักกีฬา
‫ดังนั้นเราจึงต้องแฮชรวมไว้ด้วย
‫มันจะเป็นมือปืน
‫ฉันควบคุม h.
‫และนั่นหมายความว่าเรากำลังจะวนรอบมือปืน A. ฉัน. ผู้ควบคุม, สตาร์.
‫เพียงแค่เรียกตัวควบคุมสำหรับกางเกงขาสั้นแล้วเราจะทำระยะนักแสดงอีกครั้งว่านักแม่นปืน A.
‫ฉัน. ตัวควบคุม
‫เราต้องเอาสองประเภทนี้มาจับคู่ให้ได้โลก
‫เรากำลังทำมันในระดับนี้
‫แล้วเราก็มีเนื้อความของ for ตรงนี้ที่เราจะถามว่ามันไม่ตายหรือไม่
‫ถ้าไม่อย่างนั้น ลูกศรควบคุมก็ตาย
‫โดยพื้นฐานแล้ว เรากำลังบอกว่าให้แน่ใจว่าเราไม่ตาย
‫และถ้ามันยังไม่ตาย เราก็ไปต่อและกลับมาที่การกลับมาก่อนกำหนด เพราะเรารู้ว่าเกมยังไม่จบเพียงแค่นี้
‫มิฉะนั้น หากเราผ่านรูเพื่อวนซ้ำโดยไม่กลับมา เราจำเป็นต้องจบเกมเพราะผู้เล่นต้องฆ่า
‫AI ทั้งหมดในระดับหนึ่ง
‫ในกรณีนี้ เราสามารถจบเกมได้
‫จริง.
‫เพราะนักพนันมีอยู่คนหนึ่ง
‫และนั่นควรแจ้งให้ผู้ควบคุมผู้เล่นและผู้ควบคุมทั้งหมดทราบ
‫เย็น.
‫ลองไปประกอบกันดู
‫ก่อนอื่นฉันจะไปเล่น Unreal ก่อน
‫เหตุผลบางประการที่บรรณาธิการของฉันคิดว่าฉันอยู่ในการแก้ไขสีที่ระบุ ดังนั้นฉันจะปิดมันและเริ่มต้นใหม่
‫ตอนนี้มันรีบูทแล้ว ฉันจะไปกดเล่นและฉันจะโดนฆ่า
‫ก่อนอื่นเลย.
‫ใช่ ฉันยังแพ้
‫ที่ที่ดี
‫ตอนนี้เรามาดูกันว่าฉันจะฆ่าผู้ชายคนนี้ได้หรือไม่ ก่อนที่เขาจะฆ่าฉัน
‫ไปกันเถอะ.
‫ตูม ตูม ตูม ตูม ตูม ตูม ตูม ตูม ตูม
‫ฉันแพ้เร็วเกินไป
‫ไปหาปืนกันอีกครั้งและตั้งค่า
‫เรามีความเสียหายจากปืนสูงมากสำหรับการทดสอบ
‫ฉันจะไปตั้งค่าความเสียหายกลับเป็น 20 ในครั้งนี้
‫ดังนั้นมันจึงยังเร็วอยู่แต่ไม่เร็วเท่า
‫ไปเล่นและตีผู้ชายคนนี้สองสามครั้ง
‫และสิ่งที่เราเห็นคือการที่จริง ๆ แล้วฉันชนะเพราะระดับเริ่มต้นใหม่
‫ถ้าฉันไปฆ่าผู้ชายคนนี้อีกครั้ง คุณจะไม่เห็นว่าไม่มีอะไรเกิดขึ้น
‫มันบอกว่าในบันทึกข้อความที่สร้างซึ่งมันถูกเรียกด้วยคลาส null
‫และเหตุผลสำหรับสิ่งนั้น ถ้าเราไปที่ตัวควบคุมเครื่องเล่น BP Shooter ของเราอีกครั้ง คุณจะเห็นว่าเรายังไม่ได้ติดกระจกบังลมของเรา
‫สิ่งหนึ่งที่ลืมทำไปคือคุณสามารถไปคอมไพล์ บันทึก และเล่นได้เลย
‫และตอนนี้หวังว่าถ้าฉันฆ่าผู้ชายคนนี้ไปที่ New Doom ฉันจะชนะและจะเริ่มต้นใหม่ในอีก 5 วินาที
‫และฉันต้องการแสดงให้คุณเห็นว่ามันก็จริงเช่นเดียวกัน
‫ถ้าฉันใส่ตัวควบคุมผู้เล่นจำนวนมากขึ้นในโลก ฉันต้องฆ่าทั้งสองคน
‫ไปและนำตัวละครนักกีฬามาที่นี่
‫และนี่จะเป็นศัตรูตัวที่สองของฉันที่จะฆ่า
‫ฆ่าผู้ชายคนนี้ซะ บูม
‫และมันไม่ชนะ
‫จากนั้นฉันก็ไปหาผู้ชายคนที่สอง บูม
‫และตอนนี้ฉันมีหนึ่งอันเพราะฉันฆ่า AI ทั้งหมดแล้ว และเราไม่ต้องเปลี่ยนตัวแปรใดๆ เพื่อทำเช่นนั้น เพราะ for loop
‫ของเรานับค่า A ที่มีชีวิตทั้งหมด ฉัน. ทุกครั้งตั้งแต่เริ่มต้น
‫ตอนนี้เราอยู่ในโลกที่ค่อนข้างเงียบ
‫ในการบรรยายครั้งต่อไป ฉันต้องการเริ่มดูเล็กน้อยว่าเราจะทำเสียงได้อย่างไร
‫ฉันจะไปพบคุณที่นั่น.