componentSystem.pdf
다운로드

 

Component System

 

v상속으로 인한 문제점을 피하면서 컴포넌트 조립식 프로그래밍을 하려면...?
è포함 기법 사용
è
v간단히, 필요한 클래스들을 멤버 변수로 잡아 포함할 수도 있겠지만 (하드코딩)
v다수의 컴포넌트 클래스들을 포함할 수 있고,
v컴포넌트 간의 통신이 가능할 수 있도록
v표준적인 방법을 구축하는 것

 

è컴포넌트 시스템 (GPG 64.6)

 

 

이런 개념..

 

 

 

Entity

{

Component A

Component B

Component C

...

}

 

 

è컴포넌트를 interface 로 정의하고 ID 를 부여한다.
èEntity는 ID 당 1개의 컴포넌트만 가질 수 있다.

 

è동시에 두 개 이상 컴포넌트가 필요하다면 그들을 포함하는 새로운 컴포넌트를 개발한다.
 
v기능상 비슷하지만 똑같지 않은 컴포넌트들을 Family (Category) 로 분류할 수 있다.
v같은 분류의 컴포넌트는 다른 것으로 교체 가능해야 한다
(한 분류 내에 후보가 유일하여 무언가 교체해볼 여지가 없다면 컴포넌트 프로그래밍이라 할 수 없을 듯)
 
 
 
v컴포넌트간의 통신
è모든 컴포넌트가 Owner (Parent) 의 포인터를 저장해서 활용함 (예제 코드 참조)
 
 

 

v상속 없이 GameObject 클래스 1개로 게임내 다양한 오브젝트를 표현

 

v가지고 있는 컴포넌트의 종류에 따라 오브젝트의 성격이 변함

 

v상속의 경우 해당 클래스를 가지고 있는지 dynamic_cast 를 썼겠지만,

 

v포함된 컴포넌트는 Family ID에 따라 바로 static_cast (C스타일 캐스팅)로 변환하여 쓸 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

컴포넌트의 사용

 

 

 

 

 

컴포넌트간의 통신

 

 

 

 

 

 

https://t1.daumcdn.net/cfile/tistory/2461294B529BEDCF37?download

반응형

+ Recent posts