2. 들어가기 전에
이 장에서는 유니티 에디터의 필수 인터페이스와 사용법, 게임 오브젝트 편집 방법을 다룬다.
여기서 언급하는 모든 창과 툴의 이름과 사용법을 처음부터 완전히 외울 필요는 없다. 인터페이스의 사용법이 생각나지 않으면 여기로 다시 돌아와서 확인하도록 하자!
이 장에서 다루는 내용
- 기존 프로젝트 열기
- 레이아웃 변경하기
- 메인 창
- 씬 편집 툴 살펴보기
- 게임 오브젝트 편집하기
- 씬 기즈모
레트로의 유니티 게임 프로그래밍 에센스 : 네이버 도서
2.1 기존 프로젝트 열기
Release 예제 데이터 다운로드 · IJEMIN/Unity-Programming-Essence
이 장에서는 미리 준비한 프로젝트를 열어 레이아웃과 게임 오브젝트를 변경하는 등 여러 작업을 한다. 그러므로 책의 예제 데이터를 미리 다운로드 한다.
유니티 허브를 실행하고 사용할 프로젝트를 연다. 이 장에서 사용할 프로젝트는 예제 데이터의 02 폴더에 있는 3D Demo 폴더이다.
1. 3D Demo 프로젝트 열기
- 유니티 허브 실행 > Proects 탭에서 Open 클릭
- 탐색창에서 예제폴더 > 02 폴더로 이동
- 3D Demo 폴더 선택 > Open 클릭
- 유니티 허브의 Projects 리스트에 3D Demo 프로젝트가 추가되면서 열림
* 다른 유니티 버전의 유니티 에디터
Projects 목록에 예제 프로젝트를 추가하거나 예제 프로젝트를 열 때 유니티 버전이 다르다는 안내와 경고창이 나올 수 있다. 유니티 허브에서 Open 버튼을 통해 프로젝트를 목록에 등록하는 과정에서 경고가 나온다면 이미 설치된 유니티 에디터 중 하나를 선택하여 해당 프로젝트에서 사용할 에디터 버전을 변경한다.
프로젝트가 열리는 도중에 경고가 나온다면 Confirm 또는 Continue 등의 버튼을 클릭하고 계속 진행하면 된다.
그러면 유니티가 유니티 에디터 버전에 맞춰 프로젝트 설정을 변경하고 프로젝트를 연다. 프로젝트가 망가지지 않을까 걱정할 필요는 없다.
이 책의 예제 프로젝트는 유니티 2021.2 버전을 기준으로 만들어졌다. 하지만 2021.2 버전 사이에서도 세부 버전이 다를 수 있고, 책을 읽는 시점에는 그 잉상의 버전이 사용될 수도 있다.
이 책에서는 특정 버전에서만 사용 가능한 에셋이나 코드는 사용하지 않았다. 따라서 이 책에서 사용한 유니티보다 높은 버전의 유니티 에디터로 프로젝트를 열어도 프로젝트가 망가지지 않는다.
하지만 예제들은 유니티 2021.2 이전 버전과는 호환되지 않으므로 가능한 한 최신 버전의 유니티를 사용할 것을 추천한다.
2. 샘플 씬 열기
프로젝트 창에서 SampleScene 을 더블 클릭한다.
2.2 레이아웃 변경하기
유니티 창들이 배치되어 있는 모습을 레이아웃이라고 한다. 레이아웃은 유니티 프로젝트에 아무런 영향을 미치지 않으므로 자신에게 편한 모습으로 배치하면 된다.
유니티의 레이아웃을 직접 변경해보도록 하자.
유니티의 기본 레이아웃은 Default 레이아웃이다. 현재 활성화된 레이아웃은 아래 사진에서 볼 수 있듯이 오른쪽 상단 구석의 레이아웃 버튼을 통해 표시된다.
Default 레이아웃은 이 장에서 실습할 모든 창을 한눈에 보여주지 못하므로 레이아웃을 2 by 3 으로 변경한다.
1. 레이아웃 선택
미리 설정된 레이아웃을 사용하는 것과 별개로 각 창의 위치와 크기를 직접 변경할 수 있다. 창을 옮기려면 창의 탭을 마우스로 클릭하고 드래그한다.
2. 프로젝트 창 위치 변경
- 프로젝트 창의 탭을 마우스 왼쪽 버튼으로 누른 상태에서
- 프로젝트 창을 하이어라키 창 아래로 드래그&드롭
결과 화면
이제 프로젝트 창의 가장자리를 마우스 왼쪽 버튼으로 누르고 드래그하여 크기를 마음대로 조정한다.
3. 프로젝트 창 크기 변경
- 프로젝트 창의 위쪽 모서리를 마우스로 드래그하여 크기 조정
마지막으로 이 장에서 새롭게 설명할 콘솔 창을 추가한다.
4. 콘솔 창 추가
- 유니티 상단 메뉴에서 Window > General > Console 클릭
- 추가된 콘솔 창을 인스펙터 창 아래로 드래그&드롭
2.3 메인 창
유니티에서 가장 많이 사용되는 창 여섯 개를 메인 창이라고 부른다. 이들의 명칭과 사용법을 알아보자. 앞서 변경한 레이아웃에서 메인 창 여섯 개를 모두 확인할 수 있다.
다음은 각 창에 대한 간단한 소개이다.
- 씬(Scene) 창: 게임 월드인 씬을 시각적으로 편집하는 창
- 하이어라키(Hierarchy) 창: 씬에 존재하는 모든 게임 오브젝트가 나열되는 창
- 인스펙터(Inspector) 창: 선택한 게임 오브젝트의 정보가 표시되는 창
- 게임(Game) 창: 플레이어가 실제로 보게 될 화면을 띄우는 창
- 프로젝트(Project) 창: 로그나 에러ㄴ집집가 표시되는 창
* 필자는 이 책에서는 앞서 변경한 변형된 2 by 3 레이아웃을 주로 사용하지만 레이아웃은 어디까지나 개인의 취향 영역이며 어떤 레이아웃을 선책하여 사용하더라도 책을 따라오는 데는 문제가 없다고 말하고 있다. 즉, 나는 내가 편한대로 수정하여 쓰려고 하니 혹시라도 이 글을 읽는 사람은 참고하길 바랍니다.
2.3.1 씬 창
유니티에서 씬은 하나의 게임 월드를 뜻한다. 씬 창에서는 씬에 존재하는 게임 오브젝트를 시각적으로 편집할 수 있다. 씬 창에서 게임 오브젝트를 편집할 때는 2.4절 '씬 편집 툴' 에서 설명하는 씬 편집 툴을 사용한다.
2.3.2 게임 창
게임 창은 플레이어가 실제로 보게 될 화면을 표시한다.
이곳에는 카메라 게임 오브젝트가 보고 있는 영역이 그려진다. 현재는 Main Camera 게임 오브젝트가 보고 있는 영역이 표시되어 있다.
특정 비율의 화면에서 게임이 어떻게 보일지 알고 싶다면 게임 창 좌측 상단의 Free Aspect 버튼을 누르고 원하는 화면 비율이나 해상도를 선택한다.
게임 창은 완성될 게임의 미리보기일 뿐이다. 따라서 게임 창의 크기나 화면 비율을 수정해도 빌드된 게임의 실제 실행 화면에는 영향을 주지 않는다.
2.3.3 하이어라키 창
하이어라키(계층) 창은 현재 씬에 존재하는 모든 게임 오브젝트를 나열한다.
현재 하이어라키 창에 Main Camera, Level Art, Cube 가 보인다. LevelArt 는 여러 게임 오브젝트를 자식으로 가지고 있기 때문에 이름 옆에 삼각형 버튼이 있다. 또한 LevelArt 는 7장에서 설명할 프리팹에서 생성되었기 때문에 파란색 큐브 아이콘이 할당되어 있다.
만약 하이어라키 창에서 게임 오브젝트의 목록을 확인할 수 없다면 SampleScene 의 왼쪽에 있는 삼각형 버튼을 클릭한다. 그러면 SampleScene 씬에 있는 모든 게임 오브젝트 목록이 펼쳐진다.
또한 하이어라키 창 상단의 검색 창에서 현재 로드된 씬의 게임 오브젝트와 컴포넌트를 검색할 수 있으며 검색 창 오른쪽의 검색 창 열기 버튼을 누르면 프로젝트 에셋과 씬 오브젝트를 상세하게 검색할 수 있는 개별 검색 창이 열린다.
2.3.4 인스펙터 창
인스펙터 창은 현재 선택한 게임 오브젝트의 정보를 표시한다. 즉, 현재 선택한 게임 오브젝트의 태그와 이름, 게임 오브젝트에 추가한 컴포넌트가 모두 표시된다. 여기서는 게임 오브젝트와 컴포넌트의 여러 필드를 직접 편집할 수 있다.
예를 들어 하이어라키 창에서 Cube 게임 오브젝트를 선택하면 인스펙터 창에 Cube 게임 오브젝트의 정보가 표시된다.
인스펙터 창을 보면 현재 Cube 게임 오브젝트에 다음과 같은 컴포넌트가 추가되어 있음을 알 수 있다.
- 트랜스폼(Transform): 오브젝트의 3차원 좌표와 크기, 회전을 지정한다.
- 메시 필터(Mesh Filter): 3D 메시 파일을 받아 오브젝트의 외각선을 지정한다.
- 메시 렌더러(Mesh Renderer): 메시를 따라 색을 채워 그래픽 외형을 그린다.
- 박스 콜라이더(Box Collider): 다른 물체가 부딪힐 수 있는 물리적인 표면을 만듭니다.
컴포넌트는 게임 오브젝트에 조립하는 부품을 의미한다. 컴포넌트의 역할과 사용법은 3장에서 자세히 다룬다.
2.3.5 프로젝트 창
프로젝트 창은 프로젝트에서 사용할 모든 에셋을 표시한다. 하이어라키 창처럼 프로젝트 창 상단 툴바에 검색 창과 개별 검색 창을 띄우는 버튼이 있어 사용할 에셋을 빠르게 검색할수 있다.
에셋은 개발에 사용할 모든 형태의 파일을 의미한다. 이미지, 음악, 비디오, 3D 모델, 애니메이션 파일, 스크립트 등 파일로 존재하고 프로젝트 창에 표시되는 모두가 에셋이다. 게임 월드를 파일로 저장한 씬 파일도 에셋이다.
외부 파일을 프로젝트 창으로 드래그&드롭하여 프로젝트에 추가할 수도 있다.
프로젝트 창은 기본값으로 에셋을 아이콘 뷰로 표시한다. 아이콘 뷰를 사용하면 개발을 진행하면서 에셋이 많아질 때 창이 복잡해진다. 에셋이 많을 때는 리스트 뷰 사용을 추천한다.
1. 프로젝트 창을 리스트 뷰로 변경
- 프로젝트 창 하단의 줌 슬라이드를 왼쪽 끝까지 밀기
* 참고로 프로젝트 창에는 Assets 폴더 외에 Packages 폴더도 보이는데, Packages 폴더는 17장에서 설명할 패키지 매니저에 의해 자동으로 관리되는 폴더이다. 직접 수정할 일은 없다고 한다.
2.3.6 콘솔 창
콘솔 창은 유니티가 기록(로그)을 남겨 개발자에게 정보를 전달하는 곳이다.
콘솔 창에서는 세 종류의 로그를 볼 수 있는데 이는 다음과 같다.
- 일반 로그(회색): 일반적인 기록 정보이다.
- 경고 로그(노란색): 권장할 만한 수정 사항이 존재할 때 표시된다.
- 에러 로그(빨간색): 잘못된 문법이나 접근 등으로 명령을 실행할 수 없는 문제가 생겼을 때 표시된다.
콘솔 창 좌측 상단에는 로그 출력 설정 버튼이 있다.
- Clear: 모든 로그를 지운다. 해결되지 않은 코드 문법 에러 로그는 사라지지 않는다.
- Clear on Play: 씬을 플레이할 때 직전까지 쌓여 있던 모든 로그를 지운다.
- Clear on Bulid: 빌드시 직전까지 쌓여 있던 모든 로그를 지운다.
- Clear on Recompile: 코드가 수정되어 반영될(재컴파일) 때 쌓여 있던 모든 로그를 지운다.
- Collapse: 같은 내용의 로그끼리 보기 쉽게 묶는다.
- Error Pause: 플레이 도중 에러가 발생하면 씬을 일시 정지한다.
- Editor: 유니티 에디터 외부의 기기로부터 원격 로그를 받을 수 있다.
2.4 씬 편집 툴
유니티 씬 창에는 게임 오브젝트를 편집할 때 사용할 수 있는 툴들을 모아놓은 툴 박스가 있다. 툴 박스는 다른 창들과 달리 씬 창 안에 배치된다.
툴 박스에서 툴들의 정렬 방향이나 숨김 여부 등은 툴 박스에서 마우스 오른쪽 클릭하여 설정할 수 있다. 또한 드래그하여 씬 창 상단의 툴바로 옮길 수도 있다.
각 씬 편집 툴의 역할 설명
- 핸드(Hand) 툴: 씬 카메라를 움직인다.
- 평행이동(Translate) 툴: 오브젝트를 이동시킨다.
- 회전(Rotate) 툴: 오브젝트를 회전시킨다.
- 스케일(Scale) 툴: 오브젝트의 크기를 조정한다.
- 렉트(Rect) 툴: UI와 2D 오브젝트의 크기를 조정한다.
- 트랜스폼(Transform) 툴: 평행이동, 회전, 스케일 툴을 하나로 합친 툴이다.
* 이들을 사용하는 단축키는 순서대로 Q, W, E, R, T, Y 라고 하는데 사실 나는 그냥 직접 누르지 외워서 쓴 적은 없다. 그래도 뭐 알면 좋으니까..
2.4.1 씬 돌아다니기
씬 창에서 씬을 탐색하는 방법을 알아본다.
씬 창에 화면을 띄우는 가상 카메라를 씬 카메라라고 부른다. 씬 창에서 씬을 이리저리 헤집고 다니는 것은 사실 씬 카메라를 이동시키는 것이라고 한다.
먼저 씬 포커스를 이용해 편집할 게임 오브젝트가 씬 창의 중심에 보이도록 한다. 하이어라키 창에서 어떤 게임 오브젝트를 더블 클릭하면 해당 게임 오브젝트가 씬 창의 중심에 보이도록 씬 카메라가 이동한다.
큐브 게임 오브젝트에 포커스를 줘보자.
1. 게임 오브젝트에 포커스 주기
- 하이어라키 창에서 Cube 더블 클릭
- 큐브가 씬 창의 중심에 보이도록 씬 카메라가 이동함.
이제 큐브를 더 가까이 다가가서 관찰해본다. 마우스 휠 스크롤을 이용하면 씬 카메라를 줌인/줌아웃할 수 있다.
2. 씬 카메라 줌인/줌아웃
- 씬 창에 마우스 커서를 위치시키고 휠 스크롤링
- 씬 카메라가 앞이나 뒤로 이동하면서 물체가 가까워지거나 멀어짐
이어서 씬을 상하좌우로 이동시켜본다. 씬 카메라의 위치를 옮길 때는 핸드 툴을 이용한다.
3. 핸드 툴로 씬 카메라 이동
- 툴 박스에서 핸드 툴 선택
- 씬 창에서 마우스 왼쪽 버튼을 누른 채 여러 방향으로 드래그
이 외에도 씬 카메라를 자유롭게 회전시키면서 씬을 둘러볼 수 있다.
씬 창에서 마우스 오른쪽 버튼을 누르고 있는 동안 플라이스루(Flythrough) 모드가 활성화된다. 플라이스루 모드에서는 FPS 게임을 하듯이 마우스와 WASD 키로 씬 카메라를 회전시키고 움직일 수 있다.
궤도(Orbit) 모드는 씬 창 중심의 물체를 위성처럼 공전하면서 관찰한다. 씬 창에서 Alt + 마우스 왼쪽 버튼을 누르고 있는 동안 마우스를 움직이면 씬 창 중심에 있는 물체를 기준으로 씬 카메라가 공전한다.
2.5 게임 오브젝트 편집하기
씬 편집 툴을 사용하여 게임 오브젝트의 위치와 크기를 변경하고 회전시키는 방법을 알아본다.
2.5.1 평행이동 툴
평행이동 툴은 선택한 물체를 원하는 방향으로 이동시킨다.
씬 창에서 선택한 게임 오브젝트에 나타나는 화살표가 평행이동 툴이다. 평행이동 툴의 화살표를 드래그하여 게임 오브젝트를 원하는 방향으로 이동시킬 수 있다.
화살표의 색깔이 의미하는 축
- 빨간색: X축(오른쪽이 + 방향)
- 초록색: Y축(위쪽이 + 방향)
- 파란색: Z축(앞쪽이 + 방향)
평행이동 툴의 면을 드래그하여 게임 오브젝트를 평면에 평행하게 이동시킬 수 있다. 이것은 한 축을 고정시키고 다른 두 축을 움직이는 것과 같다.
예를 들어 초록색 면을 마우스로 드래그하면 y는 고정되고 x, y 만 변경된다(xz 평면에 평행한 평행이동).
2.5.2 평행이동 툴
회전 툴은 선택한 물체를 회전시킨다.
회전 툴에서는 색깔이 있는 실선을 드래그하여 물체를 회전시킬 수 있다.
실선이 의미하는 회전축과 그 의미
- 빨간색: X축(앞뒤로 고개를 숙이고 젖히는 회전)
- 초록색: Y축(제자리에서 팽이처럼 도는 회전)
- 파란색: Z축(오뚝이처럼 좌우로 기울어지는 회전)
2.5.3 스케일 툴
스케일 툴은 선택한 물체의 크기 배울(스케일)을 키우거나 줄인다.
색깔 있는 세 큐브를 드래그하여 x, y, z 방향으로 물체의 쿠기를 변경할 수 있다. 스케일 툴 중심의 회색큐브를 드래그하면 x, y, z 스케일값을 동시에 변경할 수 있다.
2.5.4 렉트 툴
렉트 툴은 물체의 가로와 세로를 2D 직사각형으로 편집한다.
렉트 툴은 주로 UI 와 2D 오브젝트를 편집할 때 사용한다. 3D 오브젝트를 편집할 때는 거의 사용하지 않는다. 렉트 툴로 3D 오브젝트를 편집하면 Z축 방향을 무시하고 가로(x)와 세로(y) 길이만 조정된다.
2.5.5 트랜스폼 툴
트랜스폼 툴은 평행이동 툴, 회전 툴, 스케일 툴을 하나로 합친 툴이다.
2.6 씬 기즈모
씬 창 우측 상단에는 씬 기즈모(Scene Gizmo)가 있다.
씬 기즈모는 현재 씬을 바라보는 방향을 알기 쉽게 표시하고, 씬 카메라를 지정한방향으로 빠르게 전환시키는 나침반이다.
2.6.1 씬 카메라 방향 전환
씬 기즈모의 x, y, z 원뿔형 암을 클릭하면 해당 방향으로 빠르게 전환할 수 있다. 예를 들어 Y축을 클릭하면 다음과 같이 씬을 위에서 아래로 볼 수 있다.
2.6.2 원근과 등각
씬 기즈모의 중앙에는 큐브 모양의 버튼이 있다. 이것은 투영 전환 버튼이다.
투영 전환 버튼을 클릭해 씬 카메라의 투영을 원근(Perspective) 또는 등각(Isometric) 으로 전환할 수 있다.
- 원근 모드
- 등각 모드
일반적으로 3D 프로젝트에서 씬 창은원근 모드로 편집한다. 원근 모드에서는 멀리 있는 물체는 작게 보이고 가까이 있는 물체는 크게 보인다.
등각 모드에서는 멀리 있는 물체와 가까이 있는 물체가 똑같은 크기로 보인다. 이 모드에서는 거리와 상관없이 서로 다른 물체 사이의 크기를 눈대중으로 쉽게 비교할 수 있다.
2.7 씬 플레이 버튼
씬을 실제로 시작하고 테스트하는 버튼을 살펴본다. 유니티 상단에는 씬을 플레이하고 종료하는 데 사용하는 플레이 버튼이 있다.
왼쪽에서부터 다음과 같이 부른다.
- 플레이 버튼: 현재 씬을 시작(플레이)하거나 종료한다.
- 일시정지 버튼: 현재 플레이 중인 씬을 일시정지시킨다.
- 스텝 버튼: 게임 시간을 한 프레임만큼 진행한다.
이 중에서 플레이 버튼을 가장 자주 사용한다. 플레이 버튼을 누르면 버튼이 파란색으로 바뀌며 씬을 실행하고 게임을 시작하는 플레이 모드가 된다.
플레이 버튼이 파란색이면 현재 씬이 플레이 중인 것. 플레이 모드에서 플레이 버튼을 한 번 더 누르면 플레이 모드가 종료되고 플레이 버튼이 원래 색으로 돌아간다.
* 플레이 모드에서 편집
플레이 모드에서 적용한 수정 사항은 플레이 모드가 종료될 때 모두 사라진다. 즉, 수정하고자 하는 사항은 플레이 모드를 종료하고 건드리는 것을 잊으면 안 된다.
2.8 유니티 클라우드 버튼
유니티 에디터의 우측 상단에는 유니티 서비스와 관련된 버튼들이 있다.
좌측부터 순서대로 다음과 같다.
- Account: 유니티계정 관리 웹페이지로 이동하는 링크이다.
- Manage Services: 유니티 서비스와 현재 프로젝트를 연동하는 창을 표시한다.
- Collaborate: 유니티 프로젝트 협업 서비스 창을 표시한다.
유니티 서비스는 개발과 직접적인 관련은 없지만, 유저의 성향을 분석하고 광고수익을 극대화하거나 개발 생산성을 높이는 데 유용한 툴을 제공한다.
2.9 마치며
이 장에서는 유니티의 기본 창과 편집 툴을 살펴봤다. 유니티에서의 작업 대부분은 이 장에서 다룬 인터페이스 내부에서 이루어진다.
언급한 모든 창과 툴의 이름, 사용법을 외울 필요는 없다고 한다. 이름, 사용법이 생각나지 않을 때는 언제든지 이리로 돌아와서 확인하도록 하자..