Unity를 사용하려먼 Unity 엔진에서 제공하는 있는 여러 개념을 익혀야 합니다.
이번 시간에는 그중 가장 기본적인 개념인 씬과 게임오브젝트에 대해서 알아보도록 하겠습니다.
Unity 에디터위 가중 인터페이스는 여기를 참고하면 되겠습니다.
씬(Scene)은 컨텐츠를 사용하여 작업하는 공간으로, 게임이나 애플리케이션의 전체 또는 일부를 포함하는 애셋입니다.
단일 씬으로 단순한 게임을 제작하거나, 여러 개의 씬을 이용해 크고 복잡한 게임을 제작할 수도 있습니다. 보통 하나의 씬에는 관련 있는 것들을 모아둡니다.
게임오브젝트는 게임에 존재하는 모든 오브젝트를 의미합니다. 캐릭터, 조명, 파티클 같은 보이는 것부터 카메라 같이 눈에 보이지 않는 것들 모두 게임오브젝트입니다. 게임오브젝트 자체로는 아무런 기능을 하지 않습니다.
기능성은 컴포넌트(Component)를 통해 부여 되며, 게임오브젝트는 단지 여러 컴포넌트를 모아두는 컨테이너에 불과합니다.
계층 창에서 우클릭을 하면 새로운 게임오브젝트를 만들 수 있습니다.
빈 게임오브젝트를 만들고 계층창에서 클랙을 해봅시다. 그럼 인스펙터 창에 선택한 게임오브젝트의 내용물을 확인할 수 있습니다. 각 UI에 대해 알아보겠습니다.
아래의 체크박스를 토글하여 게임오브젝트를 활성화 / 비활성화를 할 수 있습니다.
비활성화가 되면 게임오브젝트는 더이상 동작하지 않습니다.
태그는 하나 이상의 게임오브젝트를 지칭할 수 있는 별칭입니다.
태그는 게임오브젝트 간 충돌처리를 할 때, 각각 어떤 게임오브젝트인지 식별하는 용도로 사용할 수 있습니다.
게임에서 전혀 움직임이 없는 게임오브젝트를 정적 게임오브젝트(Static GameObject)라고 하며, 반대를 동적 게임오브젝트(Dynamic GameObject)라고 합니다.
Unity의 많은 시스템은 정적 게임오브젝트에 대해서 미리 계산합니다.(precompute) 그래서 런타임 성능을 개선시킬 수 있습니다. 자세한 것은 여기를 참고하면 되겠습니다.
프로그래밍 언어에 프리미티브 타입이 있는 것처럼 Unity에도 프리미티브 오브젝트(Primitive Object)가 있습니다. 프리미티브 오브젝트는 간단하게 레벨*(Level)을 구성할 때 사용합니다. 마치 그림을 그릴 때, 가장 먼저 스케치하는 것처럼.
프리미티브 오브젝트와 관련된 내용은 여기를 참고하면 됩니다.
*레벨은 콘텐츠를 즐기는 단위를 말합니다. 스테이지가 될 수도 있고, 맵의 어떤 부분이 될 수도 있습니다.
모든 게임오브젝트에 꼭 있는 컴포넌트가 있습니다. 바로!! 트랜스폼 컴포넌트(Transform Component)입니다.
트랜스 폼은 게임오브젝트의 위치, 회전, 스케일, 부모 - 자식 관계를 저장합니다.
트랜스폼과 관련된 자세한 내용은 여기를 참고하면 되겠습니다.
인스펙터 창에서 트랜스폼 컴포넌트에 보여지는 여러 값은 부모의 트랜스폼 값에 영향을 받습니다.
이를 지역 좌표(Local Coordinates)라 합니다.
월드 상에서의 실제 위치는 전역 좌표(Global Coordinates)라 합니다.