Tôi đang cố gắng để có được đầu của tôi xung quanh thiết kế thực thể dựa trên thành phần.
Bước đầu tiên của tôi là tạo ra các thành phần khác nhau có thể được thêm vào một đối tượng. Đối với mọi loại thành phần tôi có một trình quản lý, sẽ gọi hàm cập nhật của mọi thành phần, chuyển qua các thứ như trạng thái bàn phím, v.v. theo yêu cầu.
Điều tiếp theo tôi đã làm là loại bỏ đối tượng và chỉ cần mỗi thành phần có Id. Vì vậy, một đối tượng được xác định bởi các thành phần có cùng Id.
Bây giờ, tôi nghĩ rằng tôi không cần một người quản lý cho tất cả các thành phần của mình, ví dụ tôi có một tài sản SizeComponent
, chỉ có một Size
tài sản). Kết quả là SizeComponent
không có phương thức cập nhật và phương thức cập nhật của người quản lý không làm gì cả.
Suy nghĩ đầu tiên của tôi là có một ObjectProperty
lớp mà các thành phần có thể truy vấn, thay vì có chúng như các thuộc tính của các thành phần. Vì vậy, một đối tượng sẽ có một số ObjectProperty
và ObjectComponent
. Các thành phần sẽ có logic cập nhật truy vấn đối tượng cho các thuộc tính. Người quản lý sẽ quản lý việc gọi phương thức cập nhật của thành phần.
Điều này có vẻ như quá kỹ thuật đối với tôi, nhưng tôi không nghĩ rằng tôi có thể loại bỏ các thành phần, bởi vì tôi cần một cách để các nhà quản lý biết đối tượng nào cần logic thành phần nào để chạy (nếu không tôi sẽ loại bỏ thành phần hoàn toàn và đẩy logic cập nhật của nó vào trình quản lý).
- Đây có phải (có
ObjectProperty
,ObjectComponent
vàComponentManager
các lớp) quá kỹ thuật? - Điều gì sẽ là một thay thế tốt?
RenderingComponent
và a PhysicsComponent
. Tôi có suy nghĩ quá mức về quyết định đặt tài sản ở đâu không? Tôi có nên gắn nó vào một trong hai, sau đó có một truy vấn khác một đối tượng cho thành phần có thuộc tính cần thiết không?
PhysicalStateInstance
(một cho mỗi đối tượng) cùng với GravityPhysicsShared
(một cho mỗi trò chơi); tuy nhiên tôi rất muốn nói rằng điều này đang mạo hiểm vào vương quốc của các kiến trúc sư hưng phấn, đừng tự kiến trúc sư vào một lỗ hổng (chính xác những gì tôi đã làm với hệ thống thành phần đầu tiên của mình). HÔN.
SizeComponent
quá mức cần thiết - bạn có thể cho rằng hầu hết các đối tượng đều có kích thước - đó là những thứ như kết xuất, AI và vật lý nơi mô hình thành phần được sử dụng; Kích thước sẽ luôn hoạt động giống nhau - vì vậy bạn có thể chia sẻ mã đó.