ฉันกำลังพยายามทำให้การออกแบบเอนทิตีอิงองค์ประกอบ
ขั้นตอนแรกของฉันคือการสร้างส่วนประกอบต่าง ๆ ที่สามารถเพิ่มไปยังวัตถุ สำหรับส่วนประกอบทุกประเภทที่ฉันมีผู้จัดการซึ่งจะเรียกฟังก์ชั่นการอัพเดทของทุกองค์ประกอบผ่านสิ่งต่าง ๆ เช่นสถานะแป้นพิมพ์ ฯลฯ ตามต้องการ
สิ่งต่อไปที่ฉันทำคือลบวัตถุออกและมีส่วนประกอบแต่ละอันที่มีรหัส ดังนั้นวัตถุจะถูกกำหนดโดยส่วนประกอบที่มีรหัสเดียวกัน
ตอนนี้ฉันกำลังคิดว่าฉันไม่ต้องการผู้จัดการสำหรับส่วนประกอบทั้งหมดของฉันเช่นฉันมี a SizeComponent
ซึ่งเพิ่งมีSize
คุณสมบัติ) ดังนั้นSizeComponent
วิธีนี้จึงไม่มีวิธีการอัพเดทและวิธีการอัพเดทของผู้จัดการก็ไม่ได้ทำอะไรเลย
ความคิดแรกของฉันคือการมีObjectProperty
คลาสที่ส่วนประกอบสามารถสอบถามได้แทนที่จะให้เป็นคุณสมบัติของส่วนประกอบ ดังนั้นวัตถุจะมีจำนวนและObjectProperty
ObjectComponent
ส่วนประกอบจะมีลอจิกการอัพเดทที่สอบถามวัตถุสำหรับคุณสมบัติ ผู้จัดการจะจัดการโทรวิธีการปรับปรุงองค์ประกอบ
ดูเหมือนว่าจะเกินความเป็นจริงสำหรับฉัน แต่ฉันไม่คิดว่าฉันจะสามารถกำจัดองค์ประกอบได้เพราะฉันต้องการวิธีที่ผู้จัดการจะต้องรู้ว่าวัตถุใดที่ต้องใช้ตรรกะขององค์ประกอบที่จะเรียกใช้ (มิฉะนั้นฉันจะลบองค์ประกอบออก สมบูรณ์และผลักดันตรรกะการอัปเดตเป็นผู้จัดการ)
- นี้คือ (มี
ObjectProperty
,ObjectComponent
และComponentManager
ชั้นเรียน) มากกว่าวิศวกรรม? - อะไรจะเป็นทางเลือกที่ดี?
RenderingComponent
PhysicsComponent
ฉันคิดถึงการตัดสินใจที่จะวางทรัพย์สินหรือไม่ ฉันควรจะติดมันในอย่างใดอย่างหนึ่งแล้วมีแบบสอบถามอื่น ๆ วัตถุสำหรับองค์ประกอบที่มีคุณสมบัติที่จำเป็น?
PhysicalStateInstance
(หนึ่งต่อวัตถุ) ข้างGravityPhysicsShared
(หนึ่งต่อเกม); อย่างไรก็ตามฉันอยากจะบอกว่านี่เป็นการลงทุนในอาณาจักรแห่งความรู้สึกสบายใจของสถาปนิกอย่าออกแบบตัวเองลงไปในหลุม (สิ่งที่ฉันทำกับระบบองค์ประกอบแรกของฉัน) จูบ.
SizeComponent
เกินความจริง - คุณสามารถสรุปได้ว่าวัตถุส่วนใหญ่มีขนาด - มันคือการเรนเดอร์ AI และฟิสิกส์ที่ใช้โมเดลส่วนประกอบ ขนาดจะทำงานเหมือนเดิมเสมอ - เพื่อให้คุณสามารถแชร์รหัสนั้นได้