ระบบส่วนประกอบของเอนทิตี - วิธีการใช้การแปลงของวัตถุ?
ในการออกแบบระบบเอนทิตีส่วนประกอบสำหรับเครื่องยนต์ของฉันฉันเจออุปสรรคเล็กน้อยในการจัดเก็บและดึงส่วนประกอบบางประเภท ก่อนอื่นให้ฉันตั้งคำศัพท์เล็กน้อยที่ฉันจะใช้ในคำถามนี้: ฉันเรียกว่า " ส่วนประกอบ " โครงสร้างข้อมูลที่เก็บข้อมูลที่เกี่ยวข้องสำหรับระบบเฉพาะ ฉันเรียกว่า " ระบบ " การรวมวิธีการและโครงสร้างข้อมูลที่ใช้ประโยชน์จากส่วนประกอบเพื่ออัปเดตสถานะเกม / อินเตอร์เฟสกับผู้ใช้ " เอนทิตี " นั้นเป็นเพียง ID ที่ใช้เพื่อดึงส่วนประกอบเฉพาะและแก้ไขข้อมูลในตรรกะของเกม แต่ละระบบมีอาร์เรย์ (ID-mapped) ของประเภทส่วนประกอบ (เช่น Physics-> PhysicsComponent, AI-> AIComponent, Rendering-> RenderingComponent) เพื่อให้สามารถทำซ้ำข้อมูลได้อย่างมีประสิทธิภาพ อย่างไรก็ตามส่วนประกอบทั้งหมดไม่ได้เป็นของระบบโดยเฉพาะ ตัวอย่างเช่นองค์ประกอบการแปลงเก็บตำแหน่งการหมุนและขนาดของวัตถุ เป็นหนึ่งในส่วนที่สำคัญที่สุดของเอนทิตี (Unity ทำให้เป็นข้อบังคับ) แม้จะถูกใช้โดยระบบจำนวนมากเช่น Physics, AI, Rendering เป็นต้น นี่เป็นปัญหาที่ฉันเผชิญอยู่มาก เนื่องจากระบบอื่น ๆ ใช้การแปลงเป็นจำนวนมากฉันจะต้องเรียกใช้เพื่อใช้สำหรับแต่ละคอมโพเนนต์อย่างไร ทางออกหนึ่งที่เป็นไปได้ที่ฉันเห็นคือการทำให้แต่ละ Component เก็บรหัสเอนทิตีของตัวเอง มันจะง่ายต่อการดึงองค์ประกอบใด ๆ …