유니티 책 PDF - yuniti chaeg PDF

게임개발자 외에는 그닥 관심이 없으시겠지만..
Unity Graphics Programming 의 pdf 본이 무료로 공개 되었습니다.

유니티 책 PDF - yuniti chaeg PDF

개인적으론 정말 큰 도움이 되었던 책입니다.
혹시나 게임 개발자 이거나 목표로 하시는 분들은 꼭 권하고 싶네요.
특히 한글 번역본까지 무료로 풀려서 더더욱 말이죠.

https://github.com/IndieVisualLab/UnityGraphicsProgrammingSeries/blob/master/README.md

그나저나 예전엔 게임 개발자 분들도 여럿 계셨었는데... 이젠 대부분 떠나셨네요.
혹시 아직 남아 있으신 분 계신가요~

따라 하면서 자연스럽게 익히는 2D & 3D 게임 개발 초보자를 위한 유니티 입문 아라카와 다쿠야, 아사노 유이치 지음 윤준 옮김 UNITY 개정판 2019 반영 초보자를 위한 유니티 입문 따라 하면서 자연스럽게 익히는 2D & 3D 게임 개발 초판 1쇄 발행 2016년 1월 20일 개정판 1쇄 발행 2019년 4월 1일 지은이 아라카와 다쿠야, 아사노 유이치 / 옮긴이 윤준 / 펴낸이 김태헌 펴낸곳 한빛미디어 (주) / 주소 서울시 서대문구 연희로2길 62 한빛미디어(주) IT출판사업부 전화 02 – 325 – 5544 / 팩스 02 – 336 – 7124 등록 1999년 6월 24일 제 25100 - 2017- 0 00058호 / ISBN 979 -11- 6 224-165- 3 93000 총괄 전태호 / 책임편집 이상복 / 기획 이미연 / 편집·조판 김철수 디자인 표지 박정화 내지 신종식 영업 김형진, 김진불, 조유미 / 마케팅 송경석, 김나예, 이행은 / 제작 박성우, 김정우 이 책에 대한 의견이나 오탈자 및 잘못된 내용에 대한 수정 정보는 한빛미디어(주)의 홈페이지나 아래 이메일로 알려주십시오. 잘못된 책은 구입하신 서점에서 교환해드립니다. 책값은 뒤표지에 표시되어 있습니다. 한빛미디어 홈페이지 www.hanbit.co.kr / 이메일 [email protected] Unity 2018 Nyumon Copyright © 2018 Takuya Arakawa / Yuichi Asano All rights reserved. Orignal Japanese editon published by SB Creative Corp. Korean translation rights © 2019 by Hanbit Media, Inc. Korean translation rights arranged with SB Creative Corp., Tokyo through Botong Agency, Seoul, Korea. 이 책의 한국어판 저작권은 Botong Agency를 통한 저작권자와의 독점 계약으로 한빛미디어가 소유합니다. 신 저작권법에 의하여 한국 내에서 보호를 받는 저작물이므로 무단전재와 무단복제를 금합니다. 지금 하지 않으면 할 수 없는 일이 있습니다. 책으로 펴내고 싶은 아이디어나 원고를 메일 ( [email protected] ) 로 보내주세요. 한빛미디어(주)는 여러분의 소중한 경험과 지식을 기다리고 있습니다. 따라 하면서 자연스럽게 익히는 2D & 3D 게임 개발 초보자를 위한 유니티 입문 아라카와 다쿠야, 아사노 유이치 지음 윤준 옮김 UNITY 개정판 2019 반영 지은이·옮긴이 소개 지은이 아라카와 다쿠야荒川巧也 일본공학원 전문학교 게임 크리에이터과 교수. 학생들의 게임 제작 지원 및 게임 엔진(유니티, 언리얼) 수업을 담당하고 있다. 현재 산업기술대학원에서 정보 아키텍처를 전공하고 있다. 프 로그래밍 기술을 향상시키는 데 매진하고 있으며, 개인적으로 UniteTokyo 2018과 CEDEC 2017에서 강연하였다. 취미는 맛집 탐방이다. 지은이 아사노 유이치浅野祐一 현역 게임 엔지니어. 과거에는 주로 콘솔 게임 개발을 담당하였으나 유니티를 접하고 나서는 스마트폰 게임 개발자로 활약 중이다. 좋아하는 동물은 병아리와 닭이다. 윤준옮긴이 [email protected] 숭실대학교 미디어학부를 졸업하고 동 대학원 모바일 랩에서 미디어공학을 전공했다. 2007년 부터 사용자를 생각하는 UI/UX에 관심을 가졌다. 현재는 프런트엔드 엔지니어로서 웹과 스마 트폰 네이티브 개발자로 활동하고 있다. 한빛미디어에서 『만들면서 배우는 언리얼 게임프로그 래밍』(2015 )과 『사전처럼 바로 찾아 쓰는 HTML5 핵심 API』(2011 )를 번역했다. 4 지은이의 말 많은 유니티 관련 서적 중에서 이 책을 선택해주셔서 감사합니다. 유니티는 게임을 비롯한 디지털 콘텐츠를 만들 때 가장 먼저 검토되는 도구입니다. 그래서 유 니티에 관한 정보를 온라인에서 쉽게 접할 수 있게 되었지만, 기능이 너무 방대하기 때문에 어 디에서부터 시작해야 좋을지 모르는 문제가 생기기도 합니다. 이 책은 처음으로 유니티를 배우 고자 하는 사람을 대상으로 했습니다. 학생을 위한 많은 유니티 세미나 경험을 바탕으로 이 책 을 집필했습니다. 이 책은 『Unity 4 입문』으로 시작해 여러 번 개정판을 냈고, 최근에는 전문학교 등에서 교과서 로 채택하고 있다는 말을 자주 들었습니다. 여러 독자님께 대단히 감사드립니다. 현재 유니티는 영상 표현 등을 리얼하게 할 수 있습니다. 그 때문에 게임 제작뿐만 아니라 영상 콘텐츠 제작 도구로 활용되는 경우도 많이 있습니다. 처음 유니티를 만났을 때 정말로 훌륭한 혁명적인 도구라고 감동했던 것을 기억하고 있습니다. 독자 여러분도 나와 같은 감동을 느꼈으면 하는 바람입니다. 이 책으로 유니티를 배우고 나서 지금까지 자신이 생각했던 것을 구현할 수 있게 된다면 저희는 매우 기쁠 겁니다. 이 책은 유니티로 게임이나 영상 작품을 만들 때 알아두면 좋은 기본적인 내용을 설명하고 있 습니다. 이 책을 다 읽고 난 후 자신이 만들고 싶었던 콘텐츠에 맞추어 유니티 관련 정보를 더 욱 깊이 있게 살펴보면 자신의 작품을 더 쉽게 만들 수 있을 겁니다. 유니티는 무료로 다운로드하여 사용할 수 있습니다. 이 책을 계기로 새로운 콘텐츠가 창출되 고, 독자 여러분의 아이디어(이 세상을 재미있게 하는 계기)가 세상에 나오는 데 도움이 되기 를 바랍니다. 2018년 8월 아라카와 다쿠야, 아사노 유이치 5 옮긴이의 말 유니티가 세상에 나온 지 10년이 훌쩍 지났습니다. 처음에는 게임 엔진으로서 다양한 플랫폼 을 위한 개발 도구로 입지를 다졌다가, 이제는 게임을 넘어서서 여러 분야에서 활용되고 있습 니다. 게임 개발뿐만 아니라 건축, 인테리어, 자동차 산업, 영상 제작 등 다양한 분야로 그 영 역을 확대해가고 있으며, 게임 개발 도구보다는 3D 도구로 도약하는 중입니다. 사실 유니티는 게임 개발자뿐만 아니라 일반인도 그 이름을 익히 알고 있을 정도로 우리에게 끼친 영향은 지 대하다고 할 수 있습니다. 이 책은 유니티의 기초적인 내용과 핵심이 잘 정리되어 있습니다. 저자는 다양한 교육 활동 경 험을 통해 실질적으로 입문자가 궁금해하고 어려워하는 내용을 잘 알고 있으며, 잘 전달할 수 있는 방법을 알고 있는 것 같습니다. 또한 3번째 개정판인 만큼 더욱 잘 정리되어 있고 내용이 깔끔해졌습니다. 유니티를 이제 막 시작하려는 분들에게 주저 없이 이 책을 추천해드리고 싶습 니다. 지나고 보면 별것 아니겠지만, 방향이나 방법을 모르는 막막한 시기에 제대로 된 안내서 가 없다면 생각보다 많은 시간을 허비할 수 있습니다. 이 책으로 방향과 방법을 확실히 터득하 고, 본인의 목적에 맞게 다음 단계로 나아간다면 이 책을 100% 활용한 겁니다. 이번에 번역 작업을 하면서 개인적으로 많은 일이 있었습니다. 그래도 무사히 책이 나올 수 있 게 도와주신 이미연 편집자님, 이번엔 함께 하지 못했지만 항상 신경 써주시는 최현우 차장님, 그리고 드러나지 않는 곳에서 책을 만드는 데 도움을 주시는 한빛미디어 관계자분들께 이 자리 를 빌려 감사의 마음을 전합니다. 작업 기간 동안 애타게 끝나길 기다리던 아내에게도 감사의 마음을 전합니다. 2019년 3월 윤준 6 이 책에 대하여 이 책의 특징 이 책에서는 유니티 엔진을 사용하여 3D, 2D, 스마트폰용 게임을 만듭니다. 차근차근 따라 하 면 자연스럽게 유니티의 사용법과 게임 개발 방법을 터득하게 됩니다. 이 책의 구성 ● 1 장에서는 유니티의 주변 지식과 설치 방법 그리고 유니티 허브를 설명합니다. ● 2 장에서는 유니티 에디터의 화면을 살펴보면서 각 기능을 사용하는 방법을 설명합니다. ● 3 장에서는 공 굴리기 3D 게임을 만들면서 실제로 유니티를 사용해봅니다. ● 4 장에서는 굴러 떨어지는 병아리 구슬을 대포로 맞히는 2D 게임을 만들면서 유니티 기본 기능을 익힙니다. ● 5 장에서는 유니티의 UI 시스템을 이용하여 게임 UI를 만드는 방법을 설명합니다. ● 6 장에서는 3D 장애물 런 게임을 만들면서 여러 리소스를 사용해봅니다. ● 7 장에서는 스마트폰용 게임을 만드는 방법을 설명합니다. 초보자 눈높이에 맞는 예제를 사용했기 때문에 각 장을 쭉 읽어나가는 것만으로도 유니티로 3D 와 2D 게임을 만들 수 있습니다. 예제 파일에 대하여 해당 장에서 사용하는 예제 파일을 한빛미디어 웹페이지에서 내려받아 사용할 수 있습니다. 필 요한 파일을 제때에 사용할 수 있도록 PC의 하드 디스크에 미리 복사해두세요. ● 예 제 코드 URL http://www.hanbit.co.kr/src/10165 유니티 엔진은 유니티 사이트에서 내려받을 수 있습니다. 내려받기와 설치 방법은 1장에서 설 명합니다. ● 유 니티 사이트 URL https://unity3d.com/kr 7 이 책의 예제는 유니티 엔진 2019.1.0b4를 기반으로 하여 작성했으며, 동작 테스트를 완료했 습니다. 개발 환경 2019년 1월 시점에서 유니티로 개발하기 위한 시스템 요구 조건은 아래와 같습니다. ● 데 스크톱 PC 또는 Mac ● 윈 도우 7 SP1 이상과 윈도우 8, 10의 64비트 버전, macOS 10.11 이상만 지원합니다. 윈도우 서버 및 OS X 서버 버전에서는 테스트하지 않았습니다. ● G PU : DX10 (셰이더 모델 4.0 ) 지원 그래픽 카드 주식회사 포켓 크에리즈 ‘게임의 힘이란 사람을 몰입하게 만드는 새로운 힘’이라는 생각으로 스마트폰 게임 개발 및 게 임의 힘을 활용한 실용적인 솔루션 연구 개발을 주요 사업으로 하는 회사입니다. ● 공 식 사이트 URL http://quantize-world.com/ ● 페 이스북 URL http://www.facebook.com/pocketqueries 크에리 포켓 크에리즈가 개발한 오리지널 3D 캐릭터입니다. 창의적인 활동을 하는 분들을 응원하 기 위해 2차 창작 활동에도 이용할 수 있는 무료 리소스로 ‘Query-chan 3D 모델 에셋’과 ‘Query-chan 모델 SD 버전 에셋’을 에셋 스토어에서 배포하고 있습니다. 수시로 버전업하고 있으며, 많은 분의 성원에 힘입어 공식 팬 사이트인 Query [email protected]가 만들어졌습니다. 크에리 는 다양한 게임 관련 기술 서적에 등장하고 있습니다. 8 ● 크 에리 공식 사이트 URL http://www.query-chan.com/ ● 공 식 트위터 URL http://twitter.com/Query_chan/ ● 크 에리 공식 팬 사이트(Query [email protected] ) URL http://query-chan.com/queryparty/ 9 CONTENTS 지은이·옮긴이 소개 �������������������������������������������������������������������������������������������������������� 4 지은이의 말 �������������������������������������������������������������������������������������������������������������������� 5 옮긴이의 말 �������������������������������������������������������������������������������������������������������������������� 6 이 책에 대하여 ���������������������������������������������������������������������������������������������������������������� 7 CHAPTER 1 유니티를 시작하기 위한 준비 1.1 유니티로 할 수 있는 것을 알자! ���������������������������������������������������������������������������������������� 20 1.1.1 게임 제작을 위한 환경이 갖추어졌다 ������������������������������������������������������������������� 20 1.1.2 유니티가 지지를 받는 이유 ���������������������������������������������������������������������������������� 20 1.2 유니티를 설치하자! �������������������������������������������������������������������������������������������������������� 23 1.2.1 유니티 다운로드하기 ������������������������������������������������������������������������������������������ 23 1.2.2 유니티 라이선스 ������������������������������������������������������������������������������������������������� 24 1.2.3 설치 순서 ����������������������������������������������������������������������������������������������������������� 24 1.2.4 유니티 허브 ������������������������������������������������������������������������������������������������������� 34 CHAPTER 2 인터페이스와 사용 방법 2.1 유니티 에디터의 화면 구성 ���������������������������������������������������������������������������������������������� 40 2.1.1 게임 뷰 �������������������������������������������������������������������������������������������������������������� 40 2.1.2 씬 뷰 ����������������������������������������������������������������������������������������������������������������� 44 2.1.3 하이어라키 창 ���������������������������������������������������������������������������������������������������� 50 2.1.4 프로젝트 창 ������������������������������������������������������������������������������������������������������� 51 2.1.5 인스펙터 창 ������������������������������������������������������������������������������������������������������� 52 2.1.6 콘솔 창 �������������������������������������������������������������������������������������������������������������� 53 2.1.7 서비스 창 ����������������������������������������������������������������������������������������������������������� 53 2.1.8 그 밖의 버튼과 메뉴 ������������������������������������������������������������������������������������������� 55 2.2 기본적인 조작 방법 �������������������������������������������������������������������������������������������������������� 59 10 2.2.1 유니티로 게임을 만드는 순서 ������������������������������������������������������������������������������ 59 2.2.2 프로젝트와 씬 만들기 ����������������������������������������������������������������������������������������� 60 2.2.3 씬에 오브젝트 배치하기 �������������������������������������������������������������������������������������� 60 2.2.4 오브젝트(컴포넌트) 설정하기 ������������������������������������������������������������������������������ 62 CHAPTER 3 유니티 사용하기 3.1 프로젝트 만들기 ������������������������������������������������������������������������������������������������������������ 73 3.1.1 새 프로젝트 만들기 �������������������������������������������������������������������������������������������� 73 3.1.2 씬 저장하기 ������������������������������������������������������������������������������������������������������� 74 3.2 바닥과 벽 만들기 ����������������������������������������������������������������������������������������������������������� 76 3.2.1 시점 조절하기 ���������������������������������������������������������������������������������������������������� 76 3.2.2 바닥 만들기 ������������������������������������������������������������������������������������������������������� 77 3.2.3 벽 만들기 ����������������������������������������������������������������������������������������������������������� 78 3.2.4 카메라 변경하기 ������������������������������������������������������������������������������������������������� 82 3.3 경사면 만들기 ��������������������������������������������������������������������������������������������������������������� 84 3.3.1 첫 번째 경사면 만들기 ���������������������������������������������������������������������������������������� 85 3.3.2 두 번째 경사면 만들기 ���������������������������������������������������������������������������������������� 86 3.3.3 세 번째 경사면 만들기 ���������������������������������������������������������������������������������������� 87 3.4 공 만들기 ��������������������������������������������������������������������������������������������������������������������� 88 3.4.1 공 추가하기 ������������������������������������������������������������������������������������������������������� 88 3.4.2 게임 실행하기 ���������������������������������������������������������������������������������������������������� 90 3.5 중력 설정하기 ��������������������������������������������������������������������������������������������������������������� 91 3.5.1 Ball에 리지드바디 설정하기 �������������������������������������������������������������������������������� 91 3.6 게임 발전시키기 ������������������������������������������������������������������������������������������������������������ 94 3.6.1 공을 여러 개 배치하기 ���������������������������������������������������������������������������������������� 94 3.6.2 탄성 설정하기 ���������������������������������������������������������������������������������������������������� 97 3.6.3 공의 색 변경하기 ���������������������������������������������������������������������������������������������� 100 11 CONTENTS CHAPTER 4 2D 게임 만들기 4.1 프로젝트 만들기 ���������������������������������������������������������������������������������������������������������� 109 4.1.1 새 프로젝트 만들기 ������������������������������������������������������������������������������������������ 109 4.1.2 게임에 사용할 이미지를 프로젝트에 추가하기 ���������������������������������������������������� 111 4.2 스프라이트 나누기 ������������������������������������������������������������������������������������������������������� 113 4.2.1 Sprite Editor 실행하기 ������������������������������������������������������������������������������������� 113 4.2.2 스프라이트 나누기 �������������������������������������������������������������������������������������������� 115 4.3 스테이지 만들기 ���������������������������������������������������������������������������������������������������������� 117 4.3.1 배경 배치하기 �������������������������������������������������������������������������������������������������� 117 4.3.2 바닥 배치하기 �������������������������������������������������������������������������������������������������� 119 4.3.3 레이어로 그리기 순서 설정하기 ������������������������������������������������������������������������� 121 4.3.4 바닥에 충돌 판정 설정하기 �������������������������������������������������������������������������������� 123 4.4 플레이어 배치하기 ������������������������������������������������������������������������������������������������������� 124 4.4.1 Player 배치하기 ����������������������������������������������������������������������������������������������� 124 4.4.2 그리기 순서 설정하기 ��������������������������������������������������������������������������������������� 126 4.4.3 CannonMuzzle 배치하기 ���������������������������������������������������������������������������������� 127 4.4.4 CannonMuzzle을 부모-자식 관계로 만들기 ������������������������������������������������������� 128 4.4.5 CannonMuzzle에 충돌 판정 설정하기 ��������������������������������������������������������������� 130 4.4.6 발사대 배치하기 ����������������������������������������������������������������������������������������������� 132 4.4.7 카메라 설정하기 ����������������������������������������������������������������������������������������������� 134 4.5 플레이어 제어하기 ������������������������������������������������������������������������������������������������������� 136 4.5.1 스크립트 추가하기 �������������������������������������������������������������������������������������������� 136 4.5.2 스크립트 작성하기 �������������������������������������������������������������������������������������������� 138 4.5.3 스크립트를 오브젝트에 어태치하기 �������������������������������������������������������������������� 143 4.5.4 게임을 실행하여 동작 확인하기 ������������������������������������������������������������������������� 145 4.6 포탄 발사하기 ������������������������������������������������������������������������������������������������������������� 145 4.6.1 CannonBall 추가하기 ��������������������������������������������������������������������������������������� 145 12 4.6.2 물리 적용과 충돌 판정 추가하기 ������������������������������������������������������������������������ 147 4.6.3 CannonBall을 프리펩으로 만들기 ��������������������������������������������������������������������� 150 4.6.4 포탄 발사하기 �������������������������������������������������������������������������������������������������� 154 4.6.5 속성 설정하기 �������������������������������������������������������������������������������������������������� 157 4.6.6 일정 시간이 경과하면 포탄이 사라지도록 하기 ��������������������������������������������������� 160 4.6.7 스크립트를 프리펩에 어태치하기 ����������������������������������������������������������������������� 163 4.7 병아리 구슬 만들기 ������������������������������������������������������������������������������������������������������ 164 4.7.1 경사면 배치하기 ����������������������������������������������������������������������������������������������� 164 4.7.2 병아리 구슬 만들기 ������������������������������������������������������������������������������������������ 166 4.7.3 병아리 구슬을 프리펩으로 만들기 ���������������������������������������������������������������������� 169 4.7.4 병아리 구슬을 스크립트로 생성하기 ������������������������������������������������������������������� 170 4.7.5 생성 위치 설정하기 ������������������������������������������������������������������������������������������ 173 4.7.6 속성 설정하기 �������������������������������������������������������������������������������������������������� 175 4.8 기능 개선하기 ������������������������������������������������������������������������������������������������������������� 176 4.8.1 병아리 구슬에 탄성 주기 ����������������������������������������������������������������������������������� 176 4.8.2 병아리 구슬을 일정 시간 뒤에 제거하기 ������������������������������������������������������������� 178 CHAPTER 5 게임 UI 만들기 5.1 유니티의 UI 시스템 ������������������������������������������������������������������������������������������������������ 187 5.1.1 UI 오브젝트를 씬에 배치하기 ���������������������������������������������������������������������������� 187 5.1.2 Canvas와 UI 오브젝트의 관계 �������������������������������������������������������������������������� 188 5.1.3 Canvas 컴포넌트의 Render Mode ������������������������������������������������������������������� 190 5.1.4 Canvas Scaler 컴포넌트의 UI Scale Mode ������������������������������������������������������ 194 5.1.5 Rect Transform 컴포넌트 ��������������������������������������������������������������������������������� 197 5.1.6 Anchor에 의한 위치 지정 ��������������������������������������������������������������������������������� 198 5.1.7 EventSystem �������������������������������������������������������������������������������������������������� 201 13 CONTENTS 5.2 주요 UI 오브젝트 ��������������������������������������������������������������������������������������������������������� 201 5.2.1 Text ���������������������������������������������������������������������������������������������������������������� 201 5.2.2 Image ������������������������������������������������������������������������������������������������������������� 204 5.2.3 Button ������������������������������������������������������������������������������������������������������������ 205 5.2.4 그 밖의 UI 오브젝트 ����������������������������������������������������������������������������������������� 207 5.3 버튼 클릭 처리하기 ������������������������������������������������������������������������������������������������������ 207 5.3.1 프로젝트 내보내기 �������������������������������������������������������������������������������������������� 208 5.3.2 프로젝트 만들고 패키지 불러오기 ���������������������������������������������������������������������� 209 5.3.3 씬 열기 ������������������������������������������������������������������������������������������������������������ 212 5.3.4 Button 배치하기 ���������������������������������������������������������������������������������������������� 212 5.3.5 버튼의 문자 변경하기 ��������������������������������������������������������������������������������������� 214 5.3.6 스크립트 만들기 ����������������������������������������������������������������������������������������������� 216 5.3.7 스크립트를 버튼에 어태치하기 �������������������������������������������������������������������������� 219 5.3.8 버튼 클릭 이벤트에 함수 연결하기 ��������������������������������������������������������������������� 219 5.4 타이틀 화면 만들기 ������������������������������������������������������������������������������������������������������ 222 5.4.1 프로젝트와 씬 준비하기 ������������������������������������������������������������������������������������ 222 5.4.2 타이틀 화면 만들기 ������������������������������������������������������������������������������������������ 224 5.4.3 시작 버튼 준비하기 ������������������������������������������������������������������������������������������ 229 5.4.4 StartButton의 위치 변경하기 ���������������������������������������������������������������������������� 232 5.4.5 스크립트 작성하기 �������������������������������������������������������������������������������������������� 235 5.4.6 스크립트를 버튼에 어태치하기 �������������������������������������������������������������������������� 238 5.4.7 버튼 클릭 이벤트에 함수 연결하기 ��������������������������������������������������������������������� 238 5.4.8 씬 등록하기 ����������������������������������������������������������������������������������������������������� 240 CHAPTER 6 3D 게임 만들기 6.1 프로젝트 만들기 ���������������������������������������������������������������������������������������������������������� 245 14 6.1.1 새 프로젝트 만들기 ������������������������������������������������������������������������������������������ 245 6.2 게임에 필요한 리소스 불러오기 �������������������������������������������������������������������������������������� 246 6.2.1 에셋 스토어 열기 ���������������������������������������������������������������������������������������������� 247 6.2.2 에셋 불러오기 �������������������������������������������������������������������������������������������������� 248 6.2.3 예제 게임 실행해보기 ��������������������������������������������������������������������������������������� 250 6.3 캐릭터 만들기 ������������������������������������������������������������������������������������������������������������� 253 6.3.1 Main 씬 열기 ��������������������������������������������������������������������������������������������������� 253 6.3.2 씬의 시점 조절하기 ������������������������������������������������������������������������������������������ 254 6.3.3 시작 지점 만들기 ���������������������������������������������������������������������������������������������� 254 6.3.4 플레이어 만들기 ����������������������������������������������������������������������������������������������� 256 6.3.5 플레이어에 태그 설정하기 ��������������������������������������������������������������������������������� 258 6.4 플레이어를 따라 카메라 이동하기 ����������������������������������������������������������������������������������� 259 6.4.1 카메라 만들기 �������������������������������������������������������������������������������������������������� 260 6.5 스테이지 만들기 ���������������������������������������������������������������������������������������������������������� 262 6.5.1 Step 만들기 ����������������������������������������������������������������������������������������������������� 263 6.5.2 Floor 만들기 ���������������������������������������������������������������������������������������������������� 264 6.5.3 Goal 만들기 ����������������������������������������������������������������������������������������������������� 266 6.5.4 House 만들기 �������������������������������������������������������������������������������������������������� 267 6.6 장애물 설치하기 ���������������������������������������������������������������������������������������������������������� 270 6.6.1 움직일 수 있는 상자 배치하기 ��������������������������������������������������������������������������� 270 6.6.2 움직이지 않는 상자 배치하기 ���������������������������������������������������������������������������� 274 6.7 스테이지에 텍스처 설정하기 ������������������������������������������������������������������������������������������ 276 6.7.1 텍스처 구하기 �������������������������������������������������������������������������������������������������� 277 6.7.2 시작 지점에 텍스처 적용하기 ���������������������������������������������������������������������������� 280 6.7.3 계단에 텍스처 적용하기 ������������������������������������������������������������������������������������ 281 6.7.4 바닥에 텍스처 적용하기 ������������������������������������������������������������������������������������ 282 6.7.5 목표 지점에 텍스처 적용하기 ���������������������������������������������������������������������������� 283 6.7.6 진입 불가 지역에 텍스처 적용하기 ��������������������������������������������������������������������� 284 15 CONTENTS 6.8 라이트 추가하기 ���������������������������������������������������������������������������������������������������������� 286 6.8.1 Directional Light를 약하게 하기 ������������������������������������������������������������������������ 286 6.8.2 시작 지점에 Spotlight 추가하기 ������������������������������������������������������������������������ 287 6.8.3 목표 지점에 Spotlight 추가하기 ������������������������������������������������������������������������ 289 6.8.4 Point Light 추가하기 ���������������������������������������������������������������������������������������� 291 6.9 플레이어 추락 처리하기 ������������������������������������������������������������������������������������������������ 296 6.9.1 스테이지에서 떨어지면 처음 위치로 돌아가기 ���������������������������������������������������� 296 6.9.2 낙하 판정 영역 만들기 �������������������������������������������������������������������������������������� 297 6.9.3 OutArea를 화면에서 보이지 않게 하기 �������������������������������������������������������������� 298 6.9.4 OutArea를 영역화하기 ������������������������������������������������������������������������������������� 300 6.9.5 낙하 판정 처리하기 ������������������������������������������������������������������������������������������ 302 6.9.6 스크립트를 낙하 판정 영역에 어태치하기 ����������������������������������������������������������� 305 6.10 스테이지의 목표 지점 만들기 ��������������������������������������������������������������������������������������� 307 6.10.1 목표 도달 판정 영역 만들기 ���������������������������������������������������������������������������� 307 6.10.2 목표 도달 처리하기 ���������������������������������������������������������������������������������������� 310 6.10.3 스크립트를 목표 도달 판정 영역에 어태치하기 ������������������������������������������������� 313 6.10.4 하이어라키 창 정리하기 ��������������������������������������������������������������������������������� 314 6.11 타이머 기능 만들기 ���������������������������������������������������������������������������������������������������� 315 6.11.1 타이머를 표시할 텍스트 추가하기 ������������������������������������������������������������������� 315 6.11.2 타이머 기능 만들기 ���������������������������������������������������������������������������������������� 318 6.11.3 스크립트를 타이머의 텍스트에 어태치하기 ������������������������������������������������������ 322 6.12 결과 화면 만들기 ������������������������������������������������������������������������������������������������������� 323 6.12.1 결과 화면의 타이틀 텍스트 만들기 ������������������������������������������������������������������ 323 6.12.2 목표 지점 도달 시간 텍스트 만들기 ����������������������������������������������������������������� 325 6.12.3 최고 기록 텍스트 만들기 �������������������������������������������������������������������������������� 327 6.12.4 재시작 버튼 만들기 ���������������������������������������������������������������������������������������� 329 6.12.5 결과 화면 숨기기 ������������������������������������������������������������������������������������������� 331 6.12.6 결과 표시 기능 만들기 ����������������������������������������������������������������������������������� 333 16 6.12.7 스크립트를 Canvas에 어태치하기 ������������������������������������������������������������������� 338 6.12.8 오브젝트 어태치하기 �������������������������������������������������������������������������������������� 339 6.12.9 버튼 이벤트 설정하기 ������������������������������������������������������������������������������������� 340 6.13 사운드 적용하기 �������������������������������������������������������������������������������������������������������� 343 6.13.1 오디오 처리하기 �������������������������������������������������������������������������������������������� 343 6.13.2 사운드 불러오기 �������������������������������������������������������������������������������������������� 344 6.13.3 Audio Source 어태치하기 ������������������������������������������������������������������������������ 346 CHAPTER 7 스마트폰에서 실행하기 7.1 스마트폰용 프로젝트 만들기 ������������������������������������������������������������������������������������������ 355 7.1.1 프로젝트 익스포트하기 ������������������������������������������������������������������������������������� 355 7.1.2 프로젝트 임포트하기 ���������������������������������������������������������������������������������������� 356 7.1.3 스마트폰용으로 설정 변경하기 �������������������������������������������������������������������������� 358 7.2 스마트폰 입력 처리하기 ������������������������������������������������������������������������������������������������ 360 7.2.1 조이스틱 설정하기 �������������������������������������������������������������������������������������������� 360 7.2.2 처리 부담 줄이기 ���������������������������������������������������������������������������������������������� 361 7.3 스마트폰에서 실행하기 ������������������������������������������������������������������������������������������������� 364 7.3.1 아이폰에서 실행하기 ���������������������������������������������������������������������������������������� 365 7.3.2 안드로이드폰에서 실행하기 ������������������������������������������������������������������������������� 370 마치면서 ��������������������������������������������������������������������������������������������������������������������������������������������������� 380 찾아보기 ��������������������������������������������������������������������������������������������������������������������������������������������������� 381 17 1CHAPTER 유니티를 시작하기 위한 준비 1.1 유니티로 할 수 있는 것을 알자! 이 장에서는 유니티로 게임을 만들기 전에 유니티의 주변 환경과 장점을 확인해봅니다. 실제로 유니티를 다루기 전에 이러한 개요를 알고 있으면 유니티를 보다 깊이 이해할 수 있을 겁니다. 1.1.1 게임 제작을 위한 환경이 갖추어졌다 요즘처럼 개인이나 작은 조직에서 게임 개발을 시작할 기회가 갖추어진 시대는 없었습니다. 앱 스토어나 구글 플레이 등 앱 배포를 위한 인프라의 보급과 이전과 비교하여 고성능의 컴퓨터를 쉽게 마련할 수 있는 등 환경적인 면에서도 게임 제작을 지원해주고 있습니다. 또한 스마트폰의 보급으로 인해 ‘내 스마트폰에서 동작하는 게임을 만들고 싶다’고 생각하는 분 도 많을 겁니다. 이러한 배경으로 인해 게임 제작에 대한 수요가 증가하고 있습니다. 1.1.2 유니티가 지지를 받는 이유 앞서 말했듯이 게임 개발에 대한 수요가 증가하고 있는 배경에는 게임 제작을 위한 환경이 갖 추어진 점이 있습니다. 하지만 게임 제작에는 높은 프로그래밍 기술과 수학이나 물리학 등 여 러 분야의 전문 지식이 필요합니다. 그러나 이러한 전문 지식과 프로그래밍 기술이 없어도 게 임을 만들 수 있게 해주는 것이 유니티와 같은 게임 엔진입니다. 이전에 유니티와 같은 게임 엔진은 프로 개발회사가 사용하던 것으로 사용료가 수천만에서 수 억 원에 이르는 고가의 제품이었기에 개인이나 작은 팀에서는 쉽게 사용할 수 없었습니다. 또 한 게임 엔진에는 게임 제작에 필요한 각 개발사의 핵심 기술이 담겨 있기 때문에 게임회사의 독자적인 게임 제작 도구는 외부에 공개되는 일이 없었습니다. 유니티의 대단한 점은 이렇게 일반적으로 사용할 수 없었던 게임 엔진을 대중에 공개하고 누구 나 쉽게 게임 제작의 출발선상에 설 수 있도록 만들었다는 겁니다. 유니티의 장점을 살펴봅니다. ● 개 인과 연 매출 10만 달러 이하의 조직은 유니티를 무료로 사용하여 게임을 만들 수 있다. ● 멀 티 플랫폼 대응이 가능하다. ● 마 야나 블렌더 등 다른 개발 툴과의 상호호환이 좋다. 20 초보자를 위한 유니티 입문 ● 전 세계 400만 명 이상이 사용하고 있어 정보가 많다. ● 에 셋 스토어(Asset Store )에서 게임에 사용할 리소스를 쉽게 구매하여 추가할 수 있다. 개인과 연 매출 10만 달러 이하의 조직은 무료로 사용할 수 있다 유니티는 강력한 게임 엔진임에도 불구하고 게임 제작에 필요한 기능을 개인과 연 매출 10만 달러 이하의 조직은 무료로 사용할 수 있습니다. 무료로 유니티를 사용하여 게임을 만들고 매 출이 발생해도 전혀 문제가 없습니다. 유니티는 개인과 소규모 조직이 무료로 사용할 수 있기 때문에 ‘일단 게임을 만들자!’는 도전을 가능하게 합니다. 즉, 게임 제작의 진입 장벽이 낮아졌 습니다. 멀티 플랫폼 대응이 가능하다 스마트폰 게임은 대부분 안드로이드와 iOS를 동시에 지원하고 있습니다. 일반적으로 안드로 이드는 자바, iOS는 Swift (또는 Objective-c )라는 프로그래밍 언어를 사용하여 개발하고 각 플랫폼에 맞추어 이식을 해야 합니다. 하지만 이식 작업은 인건비와 시간 등의 비용이 발생하 고 각 플랫폼에 맞춘 별도의 작업이 생길 수도 있습니다. 유니티는 작성된 게임을 원 클릭으로 각각의 플랫폼에 맞는 게임 데이터로 만들어줍니다(콘솔 기기용 게임은 각 플랫폼을 제공하는 기업과의 라이선스 계약 등이 필요합니다). 이처럼 멀티 플랫폼 대응이 가능한 게임을 손쉽게 만들 수 있기 때문에 기업 입장에서 매우 매력적입니다. 또한 개인이 게임이 만들 때도 특정 플랫폼에 대한 이해가 없어도 다양한 플랫폼에 맞는 게임 을 만들 수 있습니다. 유니티는 계속해서 새롭게 등장하는 플랫폼을 지원하기 위한 노력을 하고 있습니다. 따라서 이 후에 등장할 새로운 플랫폼을 지원할 가능성이 높습니다. 유니티가 현재 지원하고 있는 플랫폼은 다음 표와 같습니다. ▶ 주요 대응 플랫폼 윈도우 리눅스/스팀 OS 플레이스테이션 4 닌텐토 스위치 macOS 애플 tvOS 플레이스테이션 비타 페이스북 iOS 아마존 파이어 OS (Fire OS ) 엑스박스 One 애플 AR키트 (ARKit ) 안드로이드 웹지엘 (WebGL ) 닌텐토 3DS 구글 AR코어 (ARCore ) ※ 오큘러스 리프트 (Oculus Rift )나 플레이스테이션 VR 등의 기기도 지원하고 있습니다. 1장 유니티를 시작하기 위한 준비 21 다른 개발 툴과의 상호호환이 좋다 마야나 블렌더를 비롯한 모델링 도구와의 상호호환이 좋아서 각 개발 툴로 만들어진 모델을 손 쉽게 유니티에 추가하여 게임을 만들 수 있습니다. 게임 개발에 필요한 개발 툴이 유니티 대응 을 하나의 강점으로 광고하는 경우도 있습니다. 전 세계 400만 명 이상이 사용하고 있어 정보가 많다 유니티를 사용하여 콘텐츠를 만들고 있는 개발자는 전 세계에 400만 명 이상 있습니다. 개발 자가 많다는 것은 정보가 많다는 것을 의미합니다. 따라서 인터넷에서 게임을 만드는 데 필요 한 정보를 보다 쉽게 얻을 수 있는 점도 유니티의 장점입니다. 유니티 테크놀로지 사 자체도 개발자들 간의 정보 교류를 지원하고 있습니다. 개발 환경에 따 라서는 정보 공개를 금지하는 경우도 있지만, 유니티에서는 그럴 일이 전혀 없습니다. 에셋 스토어에서 게임에 사용할 리소스를 쉽게 얻을 수 있다 게임을 만들 때는 다양한 리소스가 필요합니다. 유니티는 에셋 스토어에서 게임에 사용할 모델 이나 음악 리소스, 프로그래밍을 작성하지 않아도 게임을 만들 수 있는 도구 등을 무료 혹은 유 료로 얻을 수 있습니다. 에셋 스토어에서 배포하는 리소스는 전문 제작자가 만든 것이기 때문 에 개인 개발자도 제대로 된 리소스를 사용하여 게임을 만들 수 있습니다. 또한 규정상 에셋 스토어에서 구입한 리소스를 사용하여 개발한 게임에서 매출이 발생해도 아 무런 문제가 되지 않습니다. ▶ 에셋 스토어 22 초보자를 위한 유니티 입문 1.2 유니티를 설치하자! 최신 유니티를 설치하여 게임을 만들 준비를 합시다. 1.2.1 유니티 다운로드하기 유니티 공식 사이트에 접속하여 인스톨러를 다운로드합니다. 이 책에서는 Personal 버전을 사 용합니다. ● 유니티 공식 사이트 URL https://unity3d.com/kr ▶ 공식 사이트에서 다운로드 시작 1 Unity 구매 클릭 ▶ Personal 버전 다운로드 1 Personal 무료 체험 클릭 1장 유니티를 시작하기 위한 준비 23 유니티로 개발할 때의 동작 환경 유니티는 윈도우 7 SP1 이후의 윈도우 또는 OS X 10.11 (엘 캐피탄, El Capitan ) 이후의 macOS를 지원 합니다. 윈도우 및 mscOS 서버용에서는 동작을 보증하지 않습니다. 또한 DirectX 10에 해당하는(셰이더 모 델 4.0 ) 성능을 가지는 그래픽 칩이 필요합니다. 이것은 2007년 이후에 생성된 것이 기준이 됩니다(일부 기 기는 이를 지원하기 위한 GPU를 필요로 합니다). 자세한 사항은 유니티 공식 사이트를 확인하세요. 1.2.2 유니티 라이선스 유니티 라이선스는 무료인 Personal 버전과 유료인 Plus/Pro 버전이 있습니다. 무료 버전과 유료 버전은 성능과 기능에 차이점이 없습니다. 단지 Personal 버전은 개인과 연 매출 10만 달러 이하의 조직만 사용할 수 있으며, Plus와 Pro 버전은 버그 지원을 우선적으로 받을 수 있 고, 게임 개발에 필요한 지원을 받을 수 있다는 점이 다릅니다. ▶ 유니티 라이선스 비용 Personal 무료 Plus 월 40,250원 Pro 월 143,750원 Personal 버전에서도 iOS나 안드로이드로 내보내기할 수 있습니다(이 경우 게임 시작 시 화 면에 유니티 로고가 표시됩니다). Plus나 Pro 버전 사용자는 게임 시작 시 유니티 로고 표시를 비표시로 변경할 수 있습니다. 1.2.3 설치 순서 지금부터 유니티 설치 순서를 설명합니다. 설치할 때는 인터넷에 접속되어 있는 상태를 기준으 로 설명합니다. 설치 파일 실행(macOS 버전) 앞서 다운로드한 설치 파일을 실행합니다. 유니티 설치 화면이 열리면 설치 마법사에 따라 설 치를 시작합니다. 24 초보자를 위한 유니티 입문 ▶ 유니티 설치 (1 ) 1 Unity Download Assistant 더블 클릭 설치 파일에 대한 경고 다이얼로그가 표시되면 확인하고 열기를 클릭하여 계속 진행합니다. ▶ 유니티 설치 (2 ) 1 열기 클릭 Continue를 클릭해 설치를 진행합니다. 설치 도중 라이선스 동의를 요구하면 라이선스 내용 을 확인하고 Agree를 클릭한 뒤 다시 Continue를 클릭하여 설치를 계속 진행합니다. ▶ 유니티 설치 (3 ) 1 Continue 클릭 1장 유니티를 시작하기 위한 준비 25 2 Agree 클릭 3 Continue 클릭 설치할 컴포넌트Component를 선택합니다. 현재 기본적으로 선택되어 있는 상태만으로도 개발 은 가능합니다. 추가로 다른 플랫폼에 대한 개발을 할 때는 여기서 해당 플랫폼을 선택합니다. 시스템 변경에 대한 허가를 요구하는 다이얼로그가 표시되면 확인하고 동의하여 설치를 진행 합니다. ▶ 유니티 설치 (4 ) 1 설치할 컴포넌트 선택 아이폰과 안드로이드용 게임을 개발하려면 여기서 iOS Build Support와 Android Build Support를 체크합니다. 2 Continue 클릭 소프트웨어 사용에 대한 동의를 요구하면 확인하고 Agree를 클릭해 동의한 다음 Continue를 클릭해 설치를 진행합니다. 26 초보자를 위한 유니티 입문 ▶ 유니티 설치(5 ) 1 Agree 클릭 2 Continue 클릭 설치할 경로를 지정합니다. Macintosh HD를 선택하고 설치를 진행합니다. ▶ 유니티 설치(6 ) 1 Macintosh HD 클릭 2 Continue 클릭 설치가 시작됩니다. 필요한 파일이 모두 설치될 때까지 기다립니다. ▶ 유니티 설치(7 ) 1장 유니티를 시작하기 위한 준비 27 설치가 완료되면 Close를 클릭하여 설치를 마친 뒤 유니티를 시작합니다. ▶ 유니티 설치(8 ) 1 Close 클릭 설치 파일 실행(윈도우 버전) 윈도우도 macOS와 설치 순서가 비슷합니다. 다운로드한 설치 파일을 실행하고 설치 마법사 에 따라 설치를 시작합니다. 다음 화면에서 Next를 클릭합니다. ▶ 유니티 설치(1 ) 1 Next 클릭 28 초보자를 위한 유니티 입문 설치 도중 라이선스 동의를 요구하면 라이선스 내용을 확인한 뒤 I accept the terms of the License Agreement를 체크하고 Next를 클릭해 설치를 계속 진행합니다. ▶ 유니티 설치(2 ) 2 Next 클릭 1 I accept the terms of the License Agreement 체크 설치할 컴포넌트를 선택합니다. 현재 기본적으로 선택되어 있는 상태만으로도 개발은 가능합 니다. 추가로 다른 플랫폼에 대한 개발을 할 때는 여기서 해당 플랫폼을 선택합니다. ▶ 유니티 설치(3 ) 1 설치할 컴포넌트 선택 아이폰과 안드로이드용 게임을 개발하려면 여기서 iOS Build Support와 Android Build Support를 체크합니다. 2 Next 클릭 1장 유니티를 시작하기 위한 준비 29 설치 경로를 지정합니다. 기본 설정 그대로 두고 Next를 클릭해 설치를 진행합니다. ▶ 유니티 설치(4 ) 1 설치 경로 지정하기(변경 가능) 2 Next 클릭 윈도우에 유니티를 설치하면 스크립트 에디터로 비주얼 스튜디오를 사용합니다. 비주얼 스튜 디오 라이선스 동의를 요청하면 I accept the terms of the License Agreement를 체크해 동의한 다음 Next를 클릭하여 설치를 진행합니다. ▶ 유니티 설치(5 ) 2 Next 클릭 1 I accept the terms of the License Agreement 체크 30 초보자를 위한 유니티 입문 필요한 파일이 설치되길 기다립니다. 도중에 비주얼 스튜디오 설치 화면이 실행되지만 설치가 완료되면 자동으로 유니티 설치로 돌아옵니다. ▶ 유니티 설치(6 ) 설치가 완료되면 Finish를 클릭하여 컴퓨터를 재시작하고 유니티를 실행합니다. ▶ 유니티 설치(7 ) 1 Finish 클릭 1장 유니티를 시작하기 위한 준비 31 유니티 계정으로 로그인하기 설치 후 유니티를 처음 실행하면 유니티 계정을 입력하는 화면이 나타납니다. 계정은 에셋 스 토어를 이용할 때 필요합니다. 여기서는 계정을 새로 만들어 로그인합니다(이후 이 책에서는 로그인되어 있는 상태를 전제로 설명합니다). ▶ 계정 설정(1 ) 1 create one 클릭 계정 생성 화면이 열리면 메일 주소 등 필요한 정보를 입력합니다. ▶ 계정 설정(2 ) 1 메일 주소 등 입력 2 체크 3 Create a Unity ID 클릭 32 초보자를 위한 유니티 입문 유니티는 등록한 메일 주소로 확인 메일을 보냅니다. 메일 내용에서 Link to confirm email 을 클릭하여 로그인하고 계정 정보를 확인합니다. ▶ 계정 설정(3 ) 1 Link to confirm email 클릭 계정 설정 화면으로 돌아와서 Continue를 클릭하면 프로젝트 생성 화면이 열립니다. 오른쪽 상단의 Sign in 버튼을 클릭하여 로그인합니다. 유니티 사용과 관련된 질문이 나오는 경우도 있습니다. ▶ 계정 설정(4 ) 1 Continue 클릭 1장 유니티를 시작하기 위한 준비 33 로그인 후에는 My Account 로 변경됩니다. 유니티가 실행 된 후 로그인/로그아웃은 이 버튼으로 실행합니다. 1.2.4 유니티 허브 유니티 허브Unity Hub를 이용해 유니티 에디터를 다운로드하고, 샘플 프로젝트와 사용자 프로 젝트를 에디터 버전별로 관리할 수 있습니다. 여러 버전의 에디터를 설치해서 사용하고 있다면 유니티 허브를 이용하여 효율적으로 프로젝트를 관리하세요. 유니티 허브 설치하기 유니티 허브는 공식 홈페이지에서 다운로드할 수 있습니다. ● 유니티 허브 공식 홈페이지 URL https://store.unity.com/kr/download ▶ 유니티 허브 다운로드 1 Unity 허브 다운로드 클릭 34 초보자를 위한 유니티 입문 설치 파일을 다운받고 실행하면 다음과 같이 설치가 진행됩니다. 내용을 확인하고 설치합니다. ▶ 설치 파일 실행 1 Agree 클릭 2 Application 폴더로 드래그 앤 드롭 유니티 허브를 설치하면 다음과 같은 화면이 나타납니다(기존에 설치한 유니티가 나타나지 않 는다면 Locate a Version을 클릭하여 수동으로 에디터를 선택할 수 있습니다). ▶ 유니티 허브 1 Locate a Version 클릭 1장 유니티를 시작하기 위한 준비 35 기존에 설치한 유니티 실행 파일을 선택합니다. ▶ 설치된 유니티 선택 1 기존에 설치한 유니티 실행 파일 선택 2 Select Editor 클릭 유니티 허브에는 정식 릴리즈 버전과 베타 버전 항목이 나뉘어 있어 홈페이지를 방문하지 않고 도 최신 버전의 유니티 에디터를 다운로드할 수 있습니다. ▶ 정식 릴리즈 버전과 베타 버전 정식 릴리즈 버전 베타 버전 1 Download 클릭 가장 최신의 베타 버전을 다운로드합니다. 이 책은 2019.1 버전을 기준으로 설명하지만 이보 다 최신 버전을 다운로드해도 책을 따라하는 데 불편함이 없을 겁니다. 36 초보자를 위한 유니티 입문 2CHAPTER 인터페이스와 사용 방법 2.1 유니티 에디터의 화면 구성 이 장에서는 유니티를 실행하면 나타나는 에디터의 화면 구성과 사용 방법을 설명합니다. 또한 게임을 만들기 전에 유니티 에디터의 기능과 역할을 알아봅니다. 유니티 에디터는 각 영역을 역할에 따라 창과 뷰로 구분할 수 있습니다. ▶ 유니티 에디터의 화면 구성 씬 뷰(게임 뷰) 하이어라키 창 프로젝트 창(콘솔 창) 인스펙터 창(서비스 창) 창과 뷰의 배치를 위한 레이아웃 패턴이 몇 가지 마련되어 있습니다(자세한 내용은 뒤에 설명 합니다). 위 화면은 기본 레이아웃입니다. 이 책에서는 기본 레이아웃을 기준으로 설명합니다. 2.1.1 게임 뷰 게임Game 뷰에는 카메라를 통해 투영된 게임 세계의 이미지가 표시됩니다. 게임을 실행했을 때와 같은 화면이 표시되므로 실제 게임이 어떻게 보이는지 확인하면서 게임을 만들 수 있습니다. 게임 뷰와 이후 설명할 씬 뷰는 뷰에 있는 탭을 클릭하여 표시를 전환할 수 있습니다. 40 초보자를 위한 유니티 입문 ▶ 게임 뷰 게임 뷰의 컨트롤 바 게임 뷰 상단에는 게임 화면의 표시를 설정하기 위한 컨트롤 바가 있습니다. ▶ 게임 뷰의 컨트롤 바 화면 전환 화면 비율 설정 확대 표시 전체 화면 표시 음 소거 상태 각종 표시 설정 화면 전환 유니티는 게임 안에 여러 대의 카메라를 마련해두고 카메라별로 표시되는 화면을 전환할 수 있습 니다. Display 1 부분을 클릭하면 나타나는 드롭다운 리스트에서 각각의 카메라에 해당하는 화 면으로 전환할 수 있습니다(화면을 전환하기 위해서는 카메라와 화면을 연결할 필요가 있습니 다). ▶ 화면 전환 2장 인터페이스와 사용 방법 41 화면 비율 설정 Free Aspect 부분을 클릭하면 나타나는 드롭다운 리스트에서 게임이 실행될 때의 화면 비율(종 횡비)을 설정할 수 있습니다. 화면 비율에 따라 게임 뷰의 표시도 변경되므로 실제 게임 화면에 보이는 모습을 확인할 수 있습니다. ▶ 화면 비율 설정 확대 표시 Scale 슬라이더를 이동하여 게임 뷰를 확대할 수 있습니다. 또한 확대된 상태에서 Alt 키를 누르 고 마우스를 드래그하면 표시 범위를 변경할 수 있습니다(확대 표시를 종료하면 원래의 표시 영역으로 돌아옵니다). 전체 화면 표시 Maximize On Play를 활성화하면 게임을 실행했을 때 게임 뷰가 전체 화면으로 표시됩니다. 음 소거 Mute Audio를 활성화하면 BGM이나 효과음 등이 재생되지 않게 됩니다. 상태 Stats를 활성화하면 렌더링 통계를 표시합니다. 게임을 실행할 기기의 메모리 사용이나 렌더링 부담 등 게임 퍼포먼스의 최적화에 도움이 되는 정보를 확인할 수 있습니다. 42 초보자를 위한 유니티 입문 ▶ 렌더링 정보 표시 각종 표시 설정 Gizmos를 활성화하면 게임 뷰에 카메라나 라이트 등을 표시하는 아이콘이 나타납니다. 또한 Gizmos의 오른쪽에 있는 ▼를 클릭하면 나타나는 드롭다운 리스트에서 인스펙터 창에 표시될 컴포넌트의 상태를 선택할 수 있습니다(리스트에서 체크를 해제한 컴포넌트는 접힌 상태로 표 시됩니다). 컴포넌트는 뒤에 자세히 설명합니다. ▶ 각종 표시 설정 기즈모 리스트에서 체크되어 있을 때 기즈모 리스트에서 체크되어 있지 않을 때 체크한 항목은 인스펙터 창에 펼쳐진 상태로 표시됩니다. 컴포넌트 이름 왼쪽의 ▶를 클릭하면 펼쳐집니다. 2장 인터페이스와 사용 방법 43 2.1.2 씬 뷰 씬Scene 뷰는 게임을 구성하는 각 오브젝트의 위치나 크기 등을 설정하기 위한 편집 화면입니다. 이 화 면을 확인하면서 게임을 만들어갑니다. 따라서 게임 제작을 위한 메인 화면이라고 말할 수 있 습니다. ▶씬뷰 씬 뷰의 컨트롤 바 씬 뷰의 상단에는 씬의 표시를 설정하기 위한 컨트롤 바가 있습니다. ▶ 씬 뷰의 컨트롤 바 씬 표시 설정 2D와 3D 전환 렌더링 활성화/비활성화 각종 표시 설정 검색 라이트 활성화/비활성화 음성 활성화/비활성화 씬 표시 설정 Shaded 부분을 클릭하면 나타나는 드롭다운 리스트에서 씬 뷰의 표시 형식을 선택할 수 있습니 다(버튼의 표시는 선택한 내용에 따라 변합니다). 초기 설정인 Shaded는 텍스처만 표시합니다. 와이어프레임만 표시하는 설정인 Wireframe, 텍스처와 와이어프레임 모두 표시하는 설정인 Shaded Wireframe도 있습니다. 44 초보자를 위한 유니티 입문 ▶ 씬의 표시 설정 Shaded Wireframe Shaded Wireframe 그 밖의 설정에 대해서는 다음 표를 참고해주세요(여기서 설정하는 항목 대부분은 좀 더 깊이 있는 개발에 필요합니다. 이 책에서는 다루지 않습니다). ▶ 씬의 표시 설정 Shaded : 텍스처만 표시합니다. Shading Mode Wireframe : 와이어프레임만 표시합니다. Miscellaneous Shaded Wireframe : 텍스처와 와이어프레임 모두 표시합니다. Shadow Cascades : 씬 뷰에 라이트의 섀도 캐스케이드를 표시합니다. Deferred Render Paths : 씬 뷰의 각 오브젝트의 렌더링 패스를 색깔별로 표시합니다. Global Illumination Alpha Channel : 씬 뷰의 각 오브젝트를 알파값으로 렌더링합니다. Realtime GI Overdraw : 씬 뷰의 각 오브젝트가 투명하게 그려집니다. 오브젝트의 겹침을 확인할 때 사용합니다. Mipmaps : 씬 뷰의 각 오브젝트에 추가한 텍스처 크기가 크면 붉은색으로, 적절하면 파란색으로 표시합니다. Texture Streaming : Texture Mipmap Streaming 시스템에 의해 실제로 메모리 에 로드되고 있는 레벨의 밉맵을 표시합니다. Sprite Mask : 마스크의 윤곽만 표시합니다. Albedo : 알베도(외부로부터의 반사광) 정보를 표시합니다. Specular : 스펙큘러(거울 면으로부터의 반사광) 정보를 표시합니다. Smoothness : 빛을 부드럽게 반사합니다. Normal : 법선을 표시합니다. Systems : 씬 뷰의 각 오브젝트가 시스템에 의해 재분할되어 연산 상태를 미리 알 수 있습니다. Clustering : 클러스터 출력을 표시합니다. Lit Clustering: 간접광의 클러스터 출력을 표시합니다. UV Charts : GI 계산에 최적화된 UV 레이아웃을 표시합니다. Albedo : GI (global illumination, 광역 조명)를 계산하기 위한 알베도를 표시합니다. Emissive : 씬 뷰의 각 오브젝트에서 GI 계산에 영향을 끼치는 발광성 오브젝트를 표시 합니다. Indirect : 간접광을 표시합니다. Directionality : 방사 조도와 일치하는 방향 정보를 표시합니다. 2장 인터페이스와 사용 방법 45 Baked GI Baked Light map : 베이크된 라이트맵을 표시합니다. Material Validation Directionality : 베이크된 GI의 방사 조도와 일치하는 방향 정보를 표시합니다. Shadowmask : 섀도 마스크를 유효화합니다. Albedo : GI를 계산하기 위한 알베도를 표시합니다. Emissive : 씬 뷰의 각 오브젝트에서 GI 계산에 영향을 끼치는 발광성 오브젝트를 표시 합니다. UV Charts : GI 계산에 최적화된 UV 레이아웃을 표시합니다. Text Validity : 베이크된 GI를 계산하기 위한 최적화된 텍스트 정보를 표시합니다. UV Overlap : UV의 겹침을 표시합니다. Lightmap Indices : 베이크된 광 유발을 표시합니다. Light Overlap : 빛의 중첩을 표시합니다. Validate Albedo : PBR (물리적으로 올바른 렌더링)의 머티리얼 알베도 설정의 타당 성을 확인합니다. Validate Metal Specular : PBR의 머티리얼 메탈 스펙큘러 설정의 타당성을 확인 합니다. 2D와 3D 전환 2D를 클릭하면 씬 뷰를 2D 표시로 전환합니다. 씬 뷰를 2D로 표시하면 정면에서 바라본 상태 가 됩니다. 또한 씬 뷰 오른쪽 상단에 표시되는 씬 기즈모가 사라집니다(씬 기즈모는 뒤에서 설명합니다). ▶ 2D와 3D의 전환 2D 비활성화 2D 활성화 라이트 활성화/비활성화 조명 설정 아이콘을 활성화하면 씬 뷰의 각 오브젝트가 빛의 영향을 받게 됩니다(기본값은 활성화 되어 있습니다). 46 초보자를 위한 유니티 입문 ▶ 라이트 활성화/비활성화 라이트 활성화 라이트 비활성화 음성 활성화/비활성화 오디오 설정 아이콘을 활성화하면 씬 뷰의 BGM이나 효과음 등 오디오 요소에서 소리가 나게 됩니다. 렌더링 활성화/비활성화 렌더링 설정 아이콘을 활성화하면 스카이박스Skybox1 등 GUI 요소를 씬 뷰에 렌더링Rendering2합니 다. 설정 가능한 GUI 요소는 다음 표를 참조하세요. ▶ 렌더링 설정 항목 스카이박스를 씬 뷰에 반영하여 렌더링할지 여부 Skybox 포그(안개 표현)를 씬 뷰에 반영하여 렌더링할지 여부 Fog 플레어(렌즈 플레어)를 씬 뷰에 반영하여 렌더링할지 여부 Flare 애니메이션이 적용되어 있는 머티리얼을 씬 뷰에 반영하여 렌더링할지 여부 Animated Materials 이미지 이펙트(카메라에 필터를 설정하여 표현하는 방식)를 씬 뷰에 반영하여 렌더링할지 Image Effects 여부 씬 뷰에서 파티클을 재생해서 렌더링할지 여부 Particle Systems 렌더링 설정 아이콘을 클릭하면 모든 항목이 활성화됩니다. 아이콘 오른쪽의 ▼ 버튼을 클릭하 면 나타나는 드롭다운 리스트에서 개별적으로 설정할 수 있습니다. 다음 그림의 씬 뷰를 살펴 1 게임에서 하늘을 표현하기 위한 머티리얼입니다. 게임의 씬을 반구 모양으로 덮고 있습니다. Windows → Rendering → Lighting Settings 메뉴에서 스카이박스를 설정할 수 있습니다. 2 데이터를 기반으로 화면상에 3D 오브젝트를 그리는 것을 말합니다. 3D 오브젝트를 그리기 위한 소프트웨어나 시스템을 렌더링 엔진 (Rendering Engine ) 또는 렌더러(Renderer )라고 합니다. 2장 인터페이스와 사용 방법 47 보면 왼쪽은 스카이박스 등의 렌더링이 활성화되어 있지만, 오른쪽은 어둡게 표시되어 있습니 다(체크 해제된 항목이 하나라도 있으면 아이콘은 비활성화 상태로 표시됩니다. 초기 설정은 스카이박스 등의 항목이 활성화되어 있습니다). ▶ 렌더링 활성화/비활성화 렌더링 활성화 렌더링 비활성화 하나라도 체크가 해제된 항목이 있으면 비활성으로 표시됩니다. 각종 표시 설정 인스펙터 창에 표시되는 컴포넌트의 상태를 설정합니다. 표시 설정은 게임 뷰에서와 같습니다. 게임 뷰의 각종 표시 설정 부분을 참조하세요. 검색 검색란에 검색어를 입력하여 씬 뷰의 오브젝트를 검색할 수 있습니다. 씬 기즈모 3D 모드에서는 씬 뷰 오른쪽 상단에 씬 기즈모가 표시됩니다. 이것을 클릭하면 90도씩 시점을 회전할 수 있습니다. 씬 기즈모에는 빨강, 초록, 파랑의 원뿔이 있으며 각각 x, y, z로 문자가 적혀 있습니다. 이것 은 씬 뷰의 좌표(X: 가로 방향, Y: 세로 방향, Z: 깊이)에 해당합니다. 씬 기즈모의 원뿔을 클 릭하면 씬 뷰의 표시 방향을 변경하여 오브젝트를 여러 각도에서 확인할 수 있습니다. 48 초보자를 위한 유니티 입문 ▶ 씬 기즈모 원뿔 모양을 클릭하면 정면에서 바라보는 방향으로 바뀝니다. ▶ 오브젝트의 방향 바꾸기 원뿔 클릭 오브젝트가 90도씩 회전합니다. 중앙의 정육면체를 클릭하면 Z축 방향의 거리가 무시됩니다. 다시 클릭하면 원래대로 돌아옵 니다. ▶ 정육면체를 클릭했을 때의 차이 에셋 스토어와 애니메이터 씬 뷰(게임 뷰) 상단에 Asset Store 탭이 표시될 때가 있습니다(탭 표시 여부는 사용자가 설정할 수 있습니 다). 이 탭을 선택하면 에셋 스토어에 접속할 수 있습니다. 에셋 스토어에서 게임 제작에 사용할 캐릭터나 사운드 데이터 등을 구매할 수 있습니다(무료로 사용할 수 있는 것도 많이 있습니다). 2장 인터페이스와 사용 방법 49 ▶ 에셋 스토어 또한 게임 제작 과정에서 Animator 탭이 추가될 수 있습니다. 애니메이터 창은 캐릭터 등에 애니메이션을 추 가하기 위한 시스템을 다루기 위한 화면입니다. ▶ 애니메이터 창 각각의 창은 Window 메뉴에서 열 수 있습니다. 창을 열면 각 창이 탭으로 추가됩니다. 2.1.3 하이어라키 창 하이어라키Hierarchy 창에는 게임을 구성하는 오브젝트가 표시됩니다. 하이어라키는 계층 구조라 는 의미입니다. 하이어라키 창에 표시되어 있는 오브젝트는 씬 뷰에도 표시됩니다. 50 초보자를 위한 유니티 입문 ▶ 하이어라키 창 프로젝트를 만든 후 오브젝트를 추가한 상태입니다. 새로운 프로젝트에는 일반적 으로 Main Camera와 Direct Light만 배치되어 있습니다. 2.1.4 프로젝트 창 프로젝트Project 창에는 게임에서 사용되는 3D 모델이나 2D 그래픽, 음악, 텍스처, 스크립트, 애니메이션 등 게임을 형성하는 요소가 포함되어 있습니다. 각 리소스는 폴더나 계층 구조로 관리 할 수 있습니다. 유니티에서 하나의 게임은 하나의 프로젝트로 만들어집니다. 프로젝트의 실체는 폴더이고 그 안에 는 게임 진행에 필요한 데이터나 정보가 담겨 있습니다. 게임 안에서 사용하는 데이터는 프로 젝트 폴더 아래에 있는 Assets 폴더 안에 담아둡니다. 유니티 프로젝트에 외부 모델이나 음악 데이터, 텍스처 데이터를 추가할 때는 프로젝트 창으로 드래그 앤 드롭해서 추가합니다. 프로젝트 창 왼쪽 상단에 있는 Create를 클릭하면 나타나는 드 롭다운 리스트에서 에셋을 새롭게 추가할 수도 있습니다(창 안에서 우클릭하여 동일한 작업을 할 수 있습니다). ▶ 프로젝트 창 게임에서 사용할 데이터(에셋)가 모두 표시됩니다. 2장 인터페이스와 사용 방법 51 유니티의 오브젝트 유니티는 캐릭터나 배경 같은 리소스, 메시지를 표시하기 위한 텍스트 등 게임을 구성하는 요소를 모두 오브젝 트로 인식합니다(유니티 매뉴얼에서는 GameObject라고 말하기도 합니다). 게임에 나오는 플레이어나 적 등의 등장인물은 오브젝트(GameObject )입니다. 또한 게임에 빛을 주는 조명이나 게임을 보이게 하는 카메 라 등 게임 세계에 보이지 않는 오브젝트도 있습니다(게임 화면에는 나타나지 않아도 게임에 오브젝트로 존재 하고 있습니다). 다른 관점으로 설명하자면, 하이어라키 창에 포함할 수 있는 것을 유니티에서는 오브젝트라고 말하고 있습니 다. 반면 단독으로 하이어라키 창에 포함할 수 없는 것을 에셋이라고 부릅니다. 예를 들어 모델 데이터에 적용 하는 텍스처나 스크립트 등의 리소스는 에셋입니다(오브젝트나 에셋을 설정하는 방법은 3장에서 배웁니다). 2.1.5 인스펙터 창 인스펙터Inspector 창에서는 각 오브젝트에 설정된 위치나 각도, 크기, 충돌 판정, 물리 설정 등의 정보를 확인하거나 편집할 수 있습니다(충돌 판정과 물리 설정은 3장에서 배웁니다). 유니티에 서는 이러한 오브젝트를 설정하기 위한 기능을 컴포넌트라고 말합니다. 하이어라키 창에서 선택한 오브젝트의 컴포넌트 정보는 인스펙터 창에서 확인 및 편집할 수 있습니다. 또한 유니티에는 다양한 기능의 컴포넌트가 마련되어 있어 인스펙터 창을 통해 오브젝트에 컴포넌트를 추가할 수 있습니다. 오브젝트에는 그 종류에 따라 몇 가지 컴포넌트가 기본적으로 설정되어 있습니다. 위치나 회전, 크기 등의 정보를 가진 Transform 컴포넌트는 모든 오브젝트가 가지는 최소한의 컴포넌트입니 다. 다음 그림은 Main Camera의 인스펙터 창입니다. 인스펙터 창에 표시되는 내용은 선택한 오브젝트에 따라 다릅니다. ▶ 인스펙터 창 Transform 컴포넌트 ▶를 클릭하면 컴포넌트의 상세 정보를 펼치거나 접을 수 있습니다. 52 초보자를 위한 유니티 입문