유니티 엔젠 동작 원리

suhan cho·2022년 9월 24일
0

상속과 재사용

class Monster

  • 인공지능 기능
  • 애니메이션 기능
  • 공격과 방어 기능
  • 물리 기능

class Orc : Monster

  • 초록색 피부
  • 오크의 애니메이션
  • 오크의 스킬
  • 그외 오크의 기능

class orcChiftan : Orc

  • 대장 모자
  • 새로운 무기와 강력 스킬
  • 그 외 오크 대장 고유 기술

상속의 한계

class Human

  • 모습을 그려주는 렌더
  • 물리 기능
  • 애니메이션 기능
  • 체력 기능

class Player : Human

  • 조작 기능
  • 공격 기능
  • 직업 기능

아직 까지는 문제 없다

class NPC : Human

  • 물리 기능 삭제
  • 체력 기능 삭제
  • 대화 기능 추가
  • 거래 기능 추가

상속으로 인해 물리 기능 삭제와 체력 기능 삭제 해야하는 추가 작업이 생겼다.

class Monster : Human

  • 애니메이션 효과가 사람과 몬스터가 달라 바꿔야 한다
  • 기존 물리를 몬스터 물리로 수정
  • 몬스터에 어울리지 않는 Human 기능 삭제

결론

  • 상속에만 의존하면 오히려 기존 코드를 재사용하기 힘든 경우가 발생
  • 기획자가 새로운 오브젝트를 만들려면 프로그래머에게 의존해야 한다

컴포넌트 패턴

미리 만든 오브젝트를 조립하여 만드는 방식

1. 컴포넌트 미리 여러개 만들기

  • 동물에 사용할 다양한 컴포넌트 기능들을 만든다
  • 폐, 지느러미, 아가미, 다리, 뿔, 날개, 식사 등

2. 빈 게임 오브젝트 생성

  • 컴포넌트를 넣을 빈 오브젝트 생성

3. 코뿔소 게임 오브젝트 완성

  • 원하는 부분을 컴포넌트에서 가져와 코뿔소 오브젝트를 완성한다

4. 상어와 독수리 게임 오브젝트 완성

  • 두 오브젝트는 필요한 컴포넌트를 가져와 완성

결론

  • 컴포넌트는 기능을 추가하거나 삭제할 때 기존 기능이 망가질 일이 없다

메시지와 브로드캐스팅

컴포넌트 구조에서 '전체 방송'을 이용해 컴포넌트의 특정 기능을 간접적으로 실행할 수 있다

MonoBehaviour

  • 유니티에서 미리 만들어 제공하는 클래스이며 컴포넌트에 필요한 기본 기능을 제공한다
  • MonoBehaviour를 상속해 만든 컴포넌트는 유니티 제어 받는다

브로드캐스팅

  • 여러 오브젝트에 공통인 메소드가 있을 때 하나하나 컴포넌트를 찾아 실행 시키는 것이 아닌 브로드캐스팅 한번으로 한번에 실행
profile
안녕하세요

0개의 댓글