본문 바로가기

Unity/▶ Unity Introduction

1-6. 유니티 엔진의 원리

728x90
반응형

1.  상속이란?

 

상속 이미 만들어진 클래스에 새로운 코드와 기능을 덧붙여 새로운 클래스를 만드는 것.
클래스 묘사할 대상과 관련된 코드를 묶는 틀. 예를 들어 몬스터의 경우 몬스터의 기능과 관련된 코드를 가짐.
상속은 부모 클래스와 자식 클래스로 이루어지는데, 표현은 다음과 같다.
부모클래스 : 자식클래스

클론(:)은 오른쪽의 부모 클래스를 상속해 왼쪽의 자식 클래스를 만든다는 의미이다.

상속의 한계

  • 코드를 재사용하기 힘든 경우가 발생할 수 있다.
  • 기획자가 새로운 오브젝트를 만들 때 프로그래머에게 지나치게 의존하는 경우가 발생할 수 있다.
  • 전에는 필요없었던 추가적인 작업이 필요할 수 있다.

2. 컴포넌트: 상속의 한계 해결

 

컴포넌트 패턴: 미리 만들어진 부품을 조립하여 완성된 오브젝트를 만드는 방식.

(컴포넌트: 미리 만들어진 부품을 일컷음)

기획자는 원하는 기능을 제공하는 컴포넌트를 찾아 게임 오브젝트에 붙여 게임 오브젝트의 실질적인 기능을 부여할 수 있다.

게임 오브젝트와 컴포넌트의 특징

  1. 유연한 재사용의 가능: 원하는 컴포넌트를 선택적으로 활용이 가능하다.
  2. 기획자의 프로그래머 의존도가 줄어듬.
  3. 각각의 컴포넌트는 독립적이므로 추가와 삭제가 자유로움.
각각의 컴포넌트는 독립적인 부품으로써, 다른 컴포넌트와 상호작용하지 않는다.(컴포넌트의 기능은 자기 자신의 컴포넌트 내부로만 연결돼있다.) 따라서 다른 컴포넌트에 의존하지 않으며, 특정 컴포넌트의 삭제와 추가에 따라 다른 기능이 훼손되지 않는다.

즉, 특정 컴포넌트가 제거된다고 해서 게임 오브젝트 전체는 망가지지 않는다!

 

3. 유니티 에디터에서의 컴포넌트 (블로그 1-3 참조)

  • 유니티의 게임 오브젝트의 외형과 기능은 컴포넌트에 의해 추가된 것임.
컴포넌트의 추가 인스펙터 - [Add Component] 클릭 (인스펙터 창 맨 밑에 있음)
컴포넌트의 제거 인스펙터 - 컴포넌트의 톱니바퀴 클릭 - [Add Delete] 클릭

왼쪽 부분의 delete가 컴포넌트 삭제, 오른쪽 부분 하단이 컴포넌트 추가

 

4. 메시지와 브로드 캐스팅

MonoBehavier이란?

유니티의 모든 컴포넌트는 MonoBehavier이라는 클래스를 상속한다.

MonoBehavier 클래스는 유니티에서 미리 만들어 제공하는 클래스로 컴포넌트에 필요한 기본 기능을 제공한다.

 

이때 MonoBehavier를 상송해서 만든 컴포넌트는 유니티의 제어를 받게 됨으로써 유니티의 메시지를 받을 수 있게 된다.

 

브로드캐스팅의 활용

브로드 캐스팅

각각의 컴포넌트는 독립적이므로 서로 상호작용하지 않으며, 유니티 엔진 또한 게임에 어떤 컴포넌트가 사용되었는지 알 수 없다.

 

따라서 유니티가 컴포넌트의 어떤 기능을 사용하고자 한다면 직접 명령하는 대신 각각의 컴포넌으에 메시지를 전달하는 방법을 사용하여 특정 기능을 간접적으로 사용할 수 있게 하는데, 이를 전체 방송 또는 브로드캐스팅이라고 한다.

유니티가 특정 기능을 수행하고자 하면 각각의 컴포넌트 전체에게 발동하고자 하는 기능의 이름을 담아 전송한다. 이때 메시지를 받은 오브젝트가 메시지에 명시된 기능을 가지고 있을 시에는 해당 기능을 실행하며 가지고 있지 않는 경우 메시지를 무시한다.

 

해당 컴포넌트가 수신된 메시지의 기능을 보유한 경우 실행
해당 컴포넌트가 수신된 메시지의 기능을 보유하지 않은 경우 무시

 

메시지의 방식

  • 메시지의 발신부는 수신부에 상관없이 발신한다.
  • 메시지의 수신부는 발신부의 위치를 상관하지 않는다.
  • 메시지의 수신부는 메시지에 명시된 기능을 가지고 있다면 실행하며 없는 경우 무시한다.

 

+ 추가용어

  • 매서드: 각 컴포넌트가 가지고 있는 기능.
  • 유니티 이벤트 함수: 이름 철자만 똑같이 구현하면 메시지에 의해 자동으로 실행되는 메서드. ex) Start()
728x90
반응형
댓글