ฉันทำงานโครงการอดิเรกบางอย่างเมื่อ 3-4 ปีที่แล้ว เกม 2D และ 3D ที่เรียบง่าย แต่เมื่อเร็ว ๆ นี้ฉันได้เริ่มโครงการที่ใหญ่กว่า Soo ในช่วงสองสามเดือนที่ผ่านมาฉันพยายามออกแบบคลาสเกมวัตถุซึ่งอาจเป็นฐานของวัตถุเกมทั้งหมดของฉัน ดังนั้นหลังจากการทดสอบแบบลองและแบบตายตัวฉันจึงหันไปหา Google ซึ่งชี้ให้ฉันเห็นอย่างรวดเร็วใน GDC PDF และ PowerPoint บางส่วน และตอนนี้ฉันกำลังพยายามเข้าใจวัตถุของเกมที่มีส่วนประกอบ
ฉันเข้าใจว่าเอ็นจิ้นสร้างวัตถุเกมแล้วแนบส่วนประกอบต่าง ๆ ที่จัดการสิ่งต่าง ๆ เช่นสุขภาพฟิสิกส์เครือข่ายและสิ่งที่คุณทำ แต่สิ่งที่ฉันไม่เข้าใจก็คือองค์ประกอบ X รู้ได้อย่างไรว่า Y ได้เปลี่ยนสถานะของวัตถุ PhysicsComponent รู้ได้อย่างไรว่าผู้เล่นยังมีชีวิตอยู่เพราะสุขภาพถูกควบคุมโดย HealthComponent .. ? และ HealthComponent เล่น "แอนิเมชั่นผู้เล่นที่เสียชีวิต" ได้อย่างไร?
ฉันอยู่ภายใต้การแสดงผลว่าเป็นอะไรเช่นนี้ (ใน HealthComponent):
if(Health < 0) {
AnimationComponent.PlayAnimation("played-died-animation")
}
แต่แล้วอีกครั้ง HealthComponent จะรู้ได้อย่างไรว่ามีการแนบออบเจกต์เกมกับ AnimationComponent ทางออกเดียวที่ฉันเห็นที่นี่คือ
มีการตรวจสอบเพื่อดูว่า AnimationComponent แนบหรือไม่ (ทั้งในรหัสส่วนประกอบหรือด้านเครื่องยนต์)
มีส่วนประกอบที่ต้องการส่วนประกอบอื่น ๆ แต่ดูเหมือนว่าจะต่อสู้กับการออกแบบองค์ประกอบทั้งหมด
เขียนเหมือน HealthWithAnimationComponent, HealthNoAnimationComponent และ soo on ซึ่งดูเหมือนว่าจะต่อสู้กับแนวคิดการออกแบบองค์ประกอบทั้งหมดอีกครั้ง