상속으로 개발의 생산성을 올린다.
그러나 상속이 늘 좋을까? 놉!
자식은 부모의 빚까지 상속해야한다. 선택적으로 상속받을 수 없다.
상속으로 오히려 코드를 재사용하기 힘든 경우가 나타날 수 있다.
그 근본적인 이유는, 미래에 사용될 '최소 필수집합'을 미리 예상하는 것이 힘들다는 것!
다시 말하면 완벽하게 순수한 베이스 클래스를 만드는 것은 어렵다는 것.
+ 기획자가 프로그래머에게 의존하게 되는 문제
이 방식을 해결할 수 있는 방법은 상속이 아니라 가지고 있는 것.
A는 필요한 기능이 있을 때마다 그 기능을 가진 오브젝트를 자기 내부에 포함시킴. 상속이 아니라!
즉, 선택적으로 기능을 골라 붙임.
비어있는 컨테이너를 만들어놓고 그 컨테이너에 기능들을 선택해서 붙이는 것.
: 게임 오브젝트- 컴포넌트 방식
게임 오브젝트:
1) 단순 홀더(Holder), 빈 껍데기
2) 게임 속에 존재하는 사물을 가리키는 단위
컴포넌트:
1) 미리 만들어진 부품
2) 각자 대표 기능을 가짐
컴포넌트의 장점:
미리 만들어진 컴포넌트를 게임 오브젝트에 조립하는 방식
1) 유연한 재사용
상속을 사용했을 때는 부모 클래스의 불필요한 기능까지도 자식 클래스가 가져가서 코드 재사용이 힘듦.
하지만 컴포넌트 방식에서는 원하는 기능만 선택적으로 가져갈 수 있음.
2) 기획자의 프로그래머 의존도가 낮아짐
필요한 기능을 조립해서 프로그래밍을 할 수 있기 때문에
3) 독립성 덕분에 추가와 삭제가 쉽다
어떤 기능을 추가, 삭제할 때 그 기능과 관련된 기능이 망가지는 경우가 생기는데,
컴포넌트는 독립성이 강해서 연관된 기능이 망가질 걱정을 덜 하게 된다.
컴포넌트는 스스로 동작하는 독립부품
그래서 자신의 게임오브젝트에 추가된 다른 컴포넌트에 관심이 없음
즉 컴포넌트 기능은 컴포넌트 내부에서 완성되어있음
그래서 컴포넌트는 다른 컴포넌트에 의존할 필요가 없어서
어떤 컴포넌트를 기존 컴포넌트에 새로 추가하거나 삭제했을 때 다른 컴포넌트가 망가지지 않음.
컴포넌트가 독립적이라면,
누가 컴포넌트의 기능을 실행시킬까?
컴포넌트는 자신만의 핵심기능 이외에도
컴포넌트 스스로에 시동을 거는 Start와
1초에 수십번 씩 자신의 상태를 갱신하고 주기적으로 시행해야 할 걸 시행하는 Update 기능이 있음.
외부의 간섭을 받지 않는 부품이 어떻게 스스로를 동작시킬까?
출처: 레트로의 유니티 C# 게임 프로그래밍 에센스 강의
'Unity' 카테고리의 다른 글
GetComponent<> (0) | 2021.06.26 |
---|---|
velocity(속도) / 소코반 - 플레이어에 관성 없애기 (0) | 2021.06.26 |
키보드 Customization / GetAxis (0) | 2021.06.26 |
게임 엔진의 원리 : 메시지와 브로드캐스팅 (0) | 2021.06.10 |
Unity 폴더 필수 요소 (0) | 2021.06.08 |
댓글