엔진 용 엔터티 구성 요소 시스템을 설계 할 때 특정 유형의 구성 요소를 저장하고 검색하는 방식에 약간의 걸림돌이 생겼습니다.
먼저이 질문에 사용할 용어를 약간 정리해 보겠습니다.
- 특정 시스템과 관련된 데이터를 저장하는 데이터 구조를 " 구성 요소 "라고합니다.
- " 시스템 "은 구성 요소를 사용하여 사용자와의 게임 상태 / 인터페이스를 업데이트하는 메서드 및 데이터 구조의 집계입니다.
- " 엔티티 "는 기본적으로 특정 구성 요소를 검색하고 게임 로직에서 데이터를 수정하는 데 사용되는 ID입니다.
각 시스템은 구성 요소 유형 (예 : 물리-> 물리적 구성 요소, AI-> AI 구성 요소, 렌더링-> 렌더링 구성 요소)의 (ID 맵핑) 배열을 소유하므로 데이터를 효율적으로 반복 할 수 있습니다.
그러나 모든 구성 요소가 시스템에서 특별히 소유하는 것은 아닙니다. 예를 들어, 변형 구성 요소는 객체의 위치, 회전 및 배율을 저장합니다. 그것은 물리학, AI, 렌더링 등과 같은 많은 시스템에서 사용되기 때문에 엔티티의 가장 중요한 부분 중 하나입니다 (Unity는 필수 요소입니다).
이것은 내가 직면하고있는 거의 문제입니다. Transform은 다른 많은 시스템에서 사용되기 때문에 각 구성 요소에 사용할 하나를 검색하려면 어떻게해야합니까? 내가 볼 수있는 한 가지 해결책은 각 구성 요소 저장소를 자체 엔티티 ID로 만드는 것입니다. 이와 같은 구성 요소를 쉽게 검색 할 수는 있지만 그렇게 효율적이지는 않으며 다른 격리 된 독립 데이터 번들로서 구성 요소의 개념에 위배됩니다.
이 문제를 해결하는 적절한 방법이 있습니까? 변환도 컴포넌트 여야합니까?