절대강좌! 유니티
48,000원
초급
게임 개발
유니티 게임 프로그래밍 바이블
23가지 다양한 게임을 만들면서 배우는 유니티 게임 개발의 모든 것
지은이 요시야 미키토, 후루카와 히데카즈, 이치죠 타카아키, 니시모리 타케토시, 무로호시 료타, 쿠루마타니 하야토, 미나토 신페이, 츠치야 츠카사, 쿠로카와 유스케, 나카무라 유이치, Garyu, 코포코포, 카세, Hataken, Monmoko
옮긴이 김은철, 유세라
도서 소개
저자 소개
역자 소개
목차
예제 코드
도서 소개
《유니티 게임 프로그래밍 바이블》은 이제 막 유니티 초보자의 길을 졸업한 개발자에게 한 단계 올라설 수 있는 실력을 갖추도록 도와주는 정보를 제공한다. 계속 진화하는 유니티 개발 환경의 최신 기능 활용법을 설명함으로써 게임 개발의 효율화와 새로운 게임에 대한 도전에 두려움 없이 나아갈 수 있도록 돕는다.
가능한 한 많은 장르나 테마를 수록하여 당장 실전에서 필요한 정보뿐만 아니라 앞으로 알아 두면 게임 제작에 도움이 될 만한 정보를 총망라해서 설명하고 있어 실질적인 게임 개발에 대한 아이디어와 노하우를 익히는 데 많은 도움이 될 것이다.
★ 이 책에서 다루는 내용 ★
- 개발 중인 게임이나 앞으로 개발할 게임에 즉시 사용할 수 있는 기술을 익힌다.
- 전문가로 가는 유니티 고급 기술을 활용한 23개의 프로젝트를 만들면서 배운다.
- 현업에서 활약 중인 저자들이 설명하는 완성도 높은 샘플 게임을 배우면서 소스코드나 에셋 등 모든 예제를 내려받아 실행할 수 있다.
도서 상세 이미지

저자 소개
- 요시야 미키토 - 19장
- 후루카와 히데카즈 - 13, 14, 15, 21장
- 이치죠 타카아키 - 20장
- 니시모리 타케토시 - 08, 18장
- 무로호시 료타 - 10장
- 쿠루마타니 하야토 - 16, 17장
- 미나토 신페이 - 01, 02장
- 츠치야 츠카사 - 07장
- 쿠로카와 유스케 - 22장
- 나카무라 유이치 - 23장
- Garyu - 05, 06장
- 코포코포 - 11, 12장
- 카세 - 04장
- Hataken - 09장
- Monmoko - 03장
역자 소개
김은철(ceo@k2apps.kr)
㈜아이티에스 대표. AWS에 기반한 IoT 실시간 서비스를 개발했다. 일본 법인 ㈜아이티에스 대표 및 엘피에이캠퍼스 전임강사(C, C++, MFC, Network, Database)를 역임하고 한화S&C㈜에서 근무했다. 역서로 『유니티 5 교과서』 외 다수가 있다. 최근에는 앱, 인공지능, 블록체인 관련 사업을 하고 있다.
유세라(serasoul@gmail.com)
일본어 전문 번역가로 활동하고 있으며 현재 ㈜컴온히어 기업 대표로 앱과 인공지능 관련 일을 하고 있다. 한국에서 영상 처리와 게임 분야의 프로그래밍을 했고 일본에서 IT 엔지니어로 활동했다. 역서로는 『유니티 5 교과서』 외 다수가 있다.
목차
- ▣ 01장: 3D RUN 게임
- 샘플에서 다루는 내용
- 샘플 게임의 플레이 방식
- 유니티 애니메이션의 기초 지식
- 메카님이란
- 애니메이터의 기능
- 애니메이터 컨트롤러의 기본
- 스테이트 머신에서 애니메이션 동작 연결
- RUN 게임 프로그램의 설명
- 프로그램의 개요
- 애니메이터 컨트롤러 에셋의 구성
- 애니메이션을 제어하는 스크립트
- 정리
- ▣ 02장: 3D RUN & 사격 게임
- 샘플에서 다루는 내용
- 샘플 게임의 플레이 방법
- 캐릭터를 애니메이션하는 「아바타」의 기초 지식
- 3D 애니메이션의 기초 기술
- 유니티에서 3D 애니메이션 기술의 활용
- 아바타 만들기
- 애니메이션 레이어의 설정
- 애니메이션 레이어를 이용한 애니메이션의 합성
- 애니메이션 레이어의 기본 조작
- 아바타 마스크
- 애니메이션 레이어의 동기화
- IK(Inverse Kinematics)를 이용한 캐릭터의 자세 제어
- 블렌드 트리
- BlendType(블렌드의 계산 방법) 지정
- Animator Override Controller로 실행 시 애니메이션의 교환
- 「3D RUN 게임」의 기능 확장
- 사격 애니메이션 만들기
- 새로운 캐릭터 추가
- 정리
- ▣ 03장: 안경 언니의 거리 산책
- 샘플에서 다루는 내용
- 샘플 앱의 개발 환경
- 샘플 앱의 사용 방법
- 캐릭터의 설정
- Rig 설정
- Animation 설정
- 캐릭터의 배치
- 환경 설정
- 스카이박스와 Ambient 설정
- 필드 설정
- Input 설정
- 키보드와 마우스 조작
- 컨트롤러로 조작
- Input Manager 설정
- 스크립트 설정
- 애니메이션 설정
- Character Controller 컴포넌트
- 애니메이터 설정
- Animator Controller 작성
- 애니메이션용 변수의 설정
- 걷는다, 뛴다, 멈춘다 애니메이션 설정
- 낙하 애니메이션 설정
- Cloth 설정
- 빈 게임 오브젝트 배치
- 캡슐의 크기와 위치 맞추기
- Cloth 컴포넌트 설정
- ▣ 04장: 낮과 밤이 흐르는 오픈 월드
- 샘플에서 다루는 내용
- 샘플 게임의 개발 환경
- 샘플 게임의 플레이 방법
- 프로젝트 구성
- 필드가 되는 「Terrain」을 만들고 설정하기
- Terrain의 개요
- 새로운 Terrain 생성
- 지형 에디트로 지형 만들기
- Paint Texture를 이용한 지면 칠하기
- Paint Details를 이용한 풀 기르기
- Terrain Settings에서 성능 조정
- 플레이어와 포털 만들기
- 플레이어 만들기
- 포털 만들기
- 낮과 밤의 흐름을 관리하는 「SkyboxController」
- 스카이박스란
- Procedural Skybox를 동적으로 조작하는 「SkyboxController」
- 「SkyboxController」의 시간 경과 처리
- 라이트를 항상 움직이기 위해 필요한 그리기 설정
- 정리
- ▣ 05장: 3D 미로
- 샘플에서 다루는 내용
- 샘플 게임 개발 환경
- 샘플 게임의 플레이 방법
- 프로젝트를 구성하는 오브젝트
- 미로 자동 생성 스크립트 설정
- 미로 자동 생성 알고리즘
- 캐릭터 설정
- Hit 스크립트에서의 각종 판정
- 미로의 메인 처리
- 버튼 이벤트 처리
- 그래픽의 고속화 처리
- 카메라링
- 오클루전 컬링
- 렌더링 순서의 최적화(다이나믹 배치)
- 캐릭터 뼈대의 최적화
- 이용할 셰이더의 용도에 따라 사용 구분
- 기타 표준 셰이더의 소개
- ▣ 06장: 3D 두더지 잡기
- 샘플에서 다루는 내용
- 샘플 게임의 개발 환경
- 샘플 게임의 사용법
- 프로젝트를 구성하는 오브젝트
- UI 구축
- 게임 화면 만들기
- 두더지 구멍 만들기
- 두더지 구멍의 포그 설정
- 오브젝트를 그리는 순서 변경
- 충돌 판정하기
- 두더지를 표시한다
- 두더지 그래픽
- 셀 룩 셰이더를 이용해 두더지 그리기
- 셀 룩의 그늘 표현
- 아웃라인 그리기
- 파티클 이펙트 만들기
- 두더지를 탭했을 때의 파티클 이펙트
- 새로운 파티클 만들기
- 자주 사용되는 파티클의 기능
- 파티클의 움직임에 노이즈나 난기류 더하기
- 파티클의 트레일 사용하기
- 파티클에 텍스처 시트 애니메이션 사용하기
- ▣ 07장: 셰이더 언어
- 샘플에서 다루는 내용
- 셰이더 언어로 프로그래밍
- 렌더링 파이프라인
- 가장 간단한 셰이더 코드의 개요
- 가장 간단한 셰이더 코드의 정점 셰이더
- 입출력 시맨틱스
- 좌표 변환
- 가장 간단한 셰이더 코드의 프래그먼트 셰이더
- 셰이더 코드의 개량(램버트 확산 반사)
- 마무리
- ▣ 08장: NavMesh Can Kickers
- 샘플에서 다루는 내용
- 샘플 게임 개발 환경
- 샘플 게임의 실행 방법
- 프로젝트 구성
- 내비게이션 시스템(NavMesh)의 기초
- 캐릭터를 놓는다
- 배경 설정
- 캐릭터에 에이전트를 추가해 움직여보기
- 마우스로 특정 지점을 클릭해 캐릭터 움직이기
- 에이전트 설정
- 내비게이션 시스템(NavMesh) 구현
- 캐릭터와 애니메이션
- 캐릭터를 점프시키기 위한 경로 설정(오프 메시 링크)
- Jumper 스크립트를 사용해 점프하기
- 점프의 처리
- Climber 스크립트를 사용해 사다리 오르기
- 내비게이션 메시 만들기
- 신규 씬의 작성과 Navigation 창 표시
- 내비게이션 메시의 자동 생성
- 자동 설정의 조정
- 오프 메시 링크를 자동으로 생성
- 오프 메시 링크를 수동으로 생성
- 구역의 비용
- 깡통과 나무 상자로 내비게이션 메시에 장애물 설정
- 트러블 슈팅
- ▣ 09장: 2D 본 애니메이션
- 샘플에서 다루는 내용
- 샘플 앱의 개발 환경
- 샘플 앱 사용법
- 프로젝트를 구성하는 오브젝트
- 아틀라스를 준비한다
- 애니메이션 제작 준비
- 캐릭터를 쌓아 올리다
- 캐릭터에 뼈대 추가하기
- SpriteMesh에 Bone 설정
- 캐릭터의 모션 설정
- 포즈 추가하기
- 애니메이터 컨트롤러로 모션을 제어
- Animation 기능으로 모션을 붙인다
- 스크립트를 사용해 캐릭터 움직이기
- ▣ 10장: 타일맵 던전
- 샘플에서 다루는 내용
- 샘플 게임의 개발 환경
- 샘플 게임의 플레이 방법
- 프로젝트의 개요
- 타일맵을 구성하는 요소
- 타일맵의 작성 흐름
- 스프라이트 설정
- SpriteAtlas 만들기
- TilePalette 만들기
- Tile 에셋 만들기
- 타일맵 관련 게임 오브젝트 만들기
- Tile 그리기
- Collider 설정
- TerrainTile을 사용해 효율적으로 맵 작성하기
- GameObjectBrush로 코인 배치
- 게임의 마무리
- 마무리
- ▣ 11장: 노벨 게임
- 샘플에서 다루는 내용
- 샘플 게임의 개발 환경
- 샘플 게임의 플레이 방법
- TextMesh Pro의 개요
- 샘플 프로젝트의 구성
- TextMesh Pro의 기능
- TextMesh Pro로 텍스트를 표시
- TextMesh Pro의 인스펙터
- 머터리얼에 대한 인스펙터의 자세한 내용
- 텍스트 입력 시 사용할 수 있는 리치 텍스트 기능
- 루비의 사용법
- 스타일 시트 이용 방법
- 스프라이트 에셋(이모티콘)의 작성 방법
- 금칙 처리
- 폰트 에셋의 작성 방법
- Font Asset Creator의 기능
- 영어의 폰트 에셋 작성 방법
- 한국어 폰트 에셋 작성 방법
- TextMesh Pro의 강점과 약점
- 노벨 게임 제작의 개요
- 노벨 게임에 필요한 것
- 노벨 게임의 프로그램 설명
- 노벨 데이터의 구조
- 노벨 명령의 구현
- 노벨 명령의 실행
- 리치 텍스트 기능의 링크 구현
- 마무리
- ▣ 12장: 3D 액션
- 샘플에서 다루는 내용
- 샘플 게임의 개발 환경
- 샘플 게임의 플레이 방법
- 샘플 게임에서 설명하는 개요
- 샘플 프로젝트 구성
- 프로그램의 설명
- TouchInputController 오브젝트의 자세한 내용
- BothHandVirtualPadView 오브젝트의 자세한 내용
- Fighter(FighterController) 오브젝트의 자세한 내용
- CameraModeEvent(CameraModeEventReceiver) 오브젝트의 자세한 내용
- Main Camera(CameraController) 오브젝트의 자세한 내용
- 기타 처리의 프로그램 개요
- ▣ 13장: AR 댄스 믹스 - ARKit 대응판 -
- 샘플에서 다루는 내용
- 샘플 앱의 개발 환경
- 샘플 앱의 사용 방법
- ARKit의 개요
- 프로젝트의 설정
- 샘플 씬의 실행
- iOS 기기를 사용하는 씬의 실행
- ARKitRemote에서 AR 앱의 동작 확인
- 프로그램 설명
- 현실 공간의 카메라 위치와 유니티의 카메라 위치 맞추기
- 카메라 영상을 배경으로 표시
- 현실 공간의 밝기와 유니티 씬 내의 밝기를 맞춘다
- 평면 검지 처리의 구현
- 히트 테스트의 구현
- 그림자 추가
- 캐릭터 추가
- 라벨 추가
- 「Unity ARKit Plugin」의 편리한 스크립트
- UnityARGeneratePlane 스크립트
- PointCloudParticleExample 스크립트
- UnityARHitTestExample 스크립트
- ARKit 1.5의 새로운 기능
- ▣ 14장: AR 댄스 믹스 - ARCore 대응판 -
- 샘플에서 다루는 내용
- 샘플 앱의 개발 환경
- 샘플 앱의 사용법
- ARCore의 개요
- 프로젝트 설정
- 샘플 씬의 실행
- 안드로이드 기기에서 샘플 씬 실행하기
- 프로그램의 설명
- 현실 공간의 카메라 위치와 유니티의 카메라 위치 맞추기
- 현실 공간의 밝기와 유니티 씬 내의 밝기를 맞춘다
- 프레임 정보의 취득
- 세션 정보의 취득
- 평면 검지 처리의 구현
- 히트 테스트의 구현
- 그림자 추가
- 캐릭터 추가
- 라벨 추가
- ARCore SDK for Unity의 편리한 스크립트
- PointcloudVisualizer
- ▣ 15장: VR 레이싱
- 샘플에서 다루는 내용
- 샘플 게임의 개발 환경
- 샘플 게임의 사용법
- Google VR의 개요
- 프로젝트 설정
- 샘플 씬의 실행
- 유니티 에디터에서 샘플 씬 실행
- 안드로이드 기기에서 샘플 씬 실행
- iOS 기기에서 샘플 씬 실행
- Instant Preview에서 VR 앱의 동작 확인
- 프로그램의 설명
- 유니티 에디터에서 움직이는 레이싱 게임 작성
- 유니티 에디터에서 VR 기기의 동작 시뮬레이트
- 카메라의 VR 대응
- 자동차 조작의 VR 대응
- 시선 포인터의 추가
- X 버튼 입력으로 게임 종료
- 데이드림 컨트롤러로 조작
- ▣ 16장: Web 카메라
- 샘플에서 다루는 내용
- 샘플 앱의 개발 환경
- 샘플 앱의 사용법
- 샘플 앱에서 샘플 씬 재생
- 프로그램 설명
- WebCamTexture의 구현
- 캡처 이미지의 생성
- 퍼즐의 생성
- 샘플 앱으로 얼굴 인식
- 윈도우 애저의 개요
- Face API의 준비
- 샘플 앱(얼굴 인식)에서 샘플 씬 실행
- 얼굴 인식 씬 프로그램의 설명
- 웹 카메라로 촬영한 이미지를 Face API에 전달
- 눈을 하트 모양으로 교체하고 특정 정보 표시
- ▣ 17장: GPS+ 지도 운동 앱
- 샘플에서 다루는 내용
- 샘플 앱의 개발 환경
- 샘플 앱의 사용 방법
- GPS, 전자 나침반의 개요
- Google Maps API의 준비
- 구글 계정 생성
- Google Static Maps API의 키 취득
- Google Places API Web Service 사용 설정
- 샘플 씬의 실행
- 프로그램의 설명
- GPS 실행
- 맵 그래픽 요청
- 전자 나침반의 반영
- 주변 정보를 요청
- 장소 이미지 요청
- 취득한 장소 이미지를 장소 위치에 표시
- 주변 정보를 맵에 표시하고, 점수를 환산할 때까지의 흐름
- ▣ 18장: AssetBundle Can Kickers
- 샘플에서 다루는 내용
- 샘플 게임의 개발 환경
- 샘플 게임의 플레이 방법
- 프로젝트 구성
- 에셋 번들의 기초
- 에셋 번들 파일 만들기
- 에셋 번들로부터 에셋 로드
- 에셋 번들의 언로드
- 씬을 에셋 번들로 만들고 로드
- 에셋 번들로 만들 수 있는 에셋과 만들 수 없는 에셋
- 네트워크를 통해 에셋 번들 로드하기
- 네트워크 환경의 준비
- 웹으로부터 에셋 번들 내려받기
- UnityWebRequest 캐싱
- 여러 에셋 번들의 빌드와 의존성
- 에셋 번들 간의 의존성 해결
- 에셋 이름으로부터 로드하는 에셋 번들 파일을 특정
- 각 에셋 번들 파일의 변경을 검지하고 다시 내려받기
- 에셋 번들의 캐싱 동작
- 에셋 증가를 사용하는 압축 설정
- 에셋 번들 로드 방법의 차이
- 에셋 번들 간의 에셋 중복
- 에셋 번들을 사용하기 위한 툴
- AssetBundle Browser
- AssetBundle Manager
- AssetBundleGraphTool
- ▣ 19장: 마스터 데이터 퀘스트
- 샘플에서 다루는 내용
- 샘플 게임의 개발 환경
- 샘플 게임의 플레이 방법
- 게임에서 마스터 데이터의 사고 방식과 제작 도구
- 마스터 데이터 분리의 중요성
- 마스터 데이터의 형식과 입력 툴의 선택
- Excel Importer의 이용
- Excel Importer의 개요와 데이터 임포트의 흐름
- 유니티에 Excel Importer 추가
- Entity 스크립트 정의
- Excel 파일의 작성과 유니티로의 임포트
- Excel 에셋의 생성과 Entity 클래스의 연결
- Excel 에셋의 반영과 이용
- 샘플 게임의 마스터 데이터 구현
- 샘플 게임에서의 마스터 데이터
- 마스터 데이터의 배치와 로드
- 마스터 데이터의 이용과 모델 클래스로의 변환
- 모델 데이터의 이용과 표시
- 마무리
- ▣ 20장: 사운드 처리
- 샘플에서 다루는 내용
- 샘플 게임의 플레이 방법
- 샘플 프로젝트의 사용법
- 유니티의 사운드 재생의 기초
- 가장 단순한 사운드 재생 스크립트
- 사운드 재생 처리 구현의 핵심 4
- 게임에서 재생되는 소리의 종류를 나눈다
- 사운드 컴포넌트의 설정
- AudioClip의 설정
- AudioSource 컴포넌트의 설정
- AudioListener의 설정
- 사운드 연출의 구현
- Play 함수의 확장
- BGM의 페이드인
- 재생 완료 통지의 구현
- 샘플 게임 프로젝트의 개요
- 발소리 구현
- 3D 사운드의 설정
- 애니메이션과 연동한 소리의 재생
- Audio Mixer와 볼륨 설정의 구현
- Audio Mixer란
- Audio Mixer의 파라미터를 스크립트로 조작
- 기타 사운드 제어 관련 Tips
- 마무리
- ▣ 21장: AI 파이터
- 샘플에서 다루는 내용
- 샘플 게임의 플레이 방법
- 샘플 앱 개발 환경
- 강화 학습의 학습순서
- 유니티 ML-Agents의 개요
- 프로젝트 설정
- 샘플 씬의 실행
- 학습 환경 만들기
- 파이썬 스크립트에서 학습
- TensorBoard를 이용한 학습 상황 확인
- 유니티에서의 추론
- 프로그램 설명
- Academy의 구현
- Brain 구현
- Player 설정 항목 지정
- Heuristic 스크립트 작성
- Agent 구현
- 배경과 캔버스
- 학습과 추론
- ▣ 22장: 스마트폰 게임 최적화
- 샘플에서 다루는 내용
- 샘플 게임 개발 환경
- 샘플 게임의 진행 방식
- 최적화 처리를 하기 전의 사전 지식
- 프로파일링의 순서
- 유니티의 프로파일러 창
- iOS/안드로이드 실제 기기에서의 실행을 프로파일링
- 샘플 프로젝트의 처리 최적화
- Physics의 최적화 실시
- 렌더링 최적화 실시
- 프로파일링하지 않고 수정 작업을 할 때
- ▣ 23장: 동영상 광고 넣기
- 이 장에서 다루는 내용
- 동영상 광고가 주목받는 이유
- 스마트폰 앱의 동영상 광고 종류
- 동영상 광고의 구현 방법
- 동영상 광고로 확보해 두고 싶은 데이터
- 동영상 광고 구현의 핵심
- 유니티 애즈(Unity Ads)의 특징
- 유니티 애즈 대시보드의 편리한 기능
- 유니티 애즈로 동영상 광고 출간
- 마무리