본문 바로가기

Study/Unity Engine

[Unity] 유니티 이해하기 01 - 게임오브젝트와 컴포넌트

게임 오브젝트

유니티의 게임 오브젝트는 '컨테이너'다. 기본적으로, GameObject는 그 자체로 아무것도 하지 않는다. 만일 이러한 게임 오브젝트를 캐릭터나 환경 아니면 다른 특수 효과가 되기 위해서는 '속성'이 필요하다. 당연하게도, 캐릭터라는 게임 오브젝트와 상자라는 게임 오브젝트는 차이가 있어야 한다. 가령, 캐릭터는 플레이어가 조종이 가능하고 여러 동작을 할 수 있어야 할 것이며, 상자는 그저 힘을 받으면 움직인다거나 할 것이다. 즉, 캐릭터가 가지는 속성과 상자가 가지는 속성은 '차별점'이 있어야 한다. 그리고 이러한 '차별점'을 만들어 주는 것이 바로 컴포넌트다.

다시금 정리해보면, 게임 오브젝트는 여러 다양한 컴포넌트의 컨테이너다.

컴포넌트

기본적으로 모든 게임 오브젝트는 자동으로 Transform 컴포넌트를 가진다. 이를 통해 게임 오브젝트의 위치, 회전, 스케일을 결정한다. 빈 게임 오브젝트를 생성하고, Component 버튼을 눌러보면 다양한 컴포넌트들이 존재하는 것을 볼 수 있다.


만일, 자신만의 Custom Component를 생성하여 게임 오브젝트에 컴포넌트로 추가하고자 한다면 반드시 MonoBehaviour를 상속 받아야한다.

이러한 컴포넌트를 설계할 때, 객체지향의 SOLID 원칙을 준수하는 것이 중요하다. 또한 유니티는 MVVM 패턴을 주로 사용하기 때문에 이 또한 지켜질 필요가 있다.

 

간단하게 말하면, 컴포넌트를 설계할 때, 하나의 게임 오브젝트를 위한 컴포넌트가 아니라 여러 방면에서 사용할 수 있는, 이식성을 가지도록 설계해야 한다.