หยุดเกมชั่วคราวภายในลูปเกม


12

ภายในลูปเกมเกมหยุดชั่วคราวโดยการกด P ซึ่งหมายความว่าลูปเกมจะไม่ทำงานอีกต่อไป ปัญหาคือหลังจากหยุดลูปนี้แล้วไม่สามารถกด P อีกครั้งเพื่อกลับมาเล่นลูปต่อได้เนื่องจากอยู่ในลูปเอง จะทำอย่างไรเพื่อให้เมื่อกด P อีกครั้งจะทำให้ลูปทำงานอีกครั้ง

คำตอบ:


20

อย่าหยุดวงเกมจริงเมื่อหยุดเกมชั่วคราว แต่คุณต้องเพิ่มตัวแปรบูลซึ่งเปลี่ยนเป็นจริง / เท็จขึ้นอยู่กับว่าเกมหยุดชั่วคราวหรือไม่ หากเกมหยุดชั่วคราวคุณจะต้องหยุดอัปเดตเกม แต่คุณยังคงสามารถแสดงเฟรมปัจจุบันรวมถึงรับการอัปเดตจากอินพุตได้

if(gameIsPaused == false)
{
    // run updates
}
checkInput();
render();

คุณอาจต้องการcheckInputฟังก์ชั่นที่แตกต่างกันสำหรับโหมดหยุดชั่วคราวและโหมดหยุดชั่วคราวเนื่องจากอาจมีการควบคุมบางอย่างที่ใช้ได้เฉพาะในโหมดเดียวหรือโหมดอื่น checkInputฟังก์ชั่นสำหรับโหมดหยุดชั่วคราวอาจจะทำอะไรมากไปกว่าการมองถ้าPถูกกดและการตั้งค่าแล้วgameIsPaused = falseแต่บางเกมยังเป็นสถานที่การทำงานนอกจากนี้บนหน้าจอหยุดชั่วคราว (ในยุค 90 มันเป็นที่นิยมที่จะมีหน้าจอหยุดชั่วคราวเป็น input ซ่อนรหัสโกงที่ทันสมัย เกมที่ชอบรวมเข้ากับหน้าจอเมนู)
ฟิลิปป์

1
แม้ว่าโดยทั่วไปฉันจะเห็นด้วยกับคำตอบของคุณ แต่ฉันคิดว่าควรระบุไว้อย่างชัดเจนว่าบางครั้งการเรียกใช้การปรับปรุงบางอย่างภายในสถานะหยุดชั่วคราว ตัวอย่างเช่นการเคลื่อนไหวรายการเมนูหรือบางทีการจัดการเสียง แนวคิดหลักคือเงื่อนไขหยุดชั่วคราวช่วยให้คุณสามารถแยกออกเป็นcheckInput/ ชุดrender/ การupdateโทรอื่นได้
นิโคลัสมิลเลอร์

สิ่งเดียวที่หยุดเกมควรเปลี่ยนคือบิต "อัปเดตโลก" ควรถูกข้ามไป ฟังก์ชั่นอื่น ๆ ทั้งหมดน่าจะใช้งานได้ตามปกติ
Mooing Duck

4
ฉันพยายามทำให้คำตอบง่ายที่สุดเท่าที่จะเป็นไปได้เพราะนี่เป็นสิ่งพื้นฐานในการเขียนโปรแกรมเกมและฉันไม่ได้สับสนกับผู้ถาม
Katu

1
@ user3730788: สาขาที่ดำเนินการหนึ่งครั้งต่อการวนรอบเกม (เช่นน้อยกว่า 100 ครั้งต่อวินาที) จะไม่มีผลกระทบต่อประสิทธิภาพที่มองเห็นได้แม้ว่าจะมีการคาดการณ์ผิดทุกครั้งก็ตาม
Ilmari Karonen

1

ทำให้การกด P สลับไปยังวงอื่นที่จัดการสถานะเกม "หยุดชั่วคราว" และอนุญาตให้เปลี่ยนกลับไปเป็นวงเกมดั้งเดิมโดยกด P อีกครั้ง

คุณสามารถใส่สิ่งนี้ลงในลูปเกมเองและแนะนำตัวแปรสถานะหากคุณต้องการและแทนที่จะปิดการวนซ้ำตัวแปรสถานะจะสลับระหว่างการดำเนินการของรหัสเฉพาะของแต่ละรัฐภายในลูป

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.