유니티로 배우는 C# 프로그래밍 6/e [초보자를 위한 유니티 완벽 가이드북]
- 원서명Learning C# by Developing Games with Unity 2021: Kickstart your C# programming and Unity journey by building 3D games from scratch, 6th Edition (ISBN 9781801813945)
- 지은이해리슨 페론(Harrison Ferrone)
- 옮긴이이지성, 송정은
- ISBN : 9791161757575
- 40,000원
- 2023년 05월 31일 펴냄
- 페이퍼백 | 512쪽 | 188*235mm
- 시리즈 : 게임 개발 프로그래밍
책 소개
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
https://github.com/AcornPublishing/csharp-game-unity
요약
C#과 유니티 게임 엔진을 사용해서 3D 게임 개발을 시작하는 입문자를 대상으로 한 책이다. C#의 기본 문법, 클래스, 상속, 컬렉션, 제네릭, 델리게이트와 같은 주요 개념을 배울 뿐만 아니라, 유니티의 기초부터 시작해 게임 디자인, 조명, 플레이어 이동, 카메라 제어 및 충돌 등 게임 개발에 필요한 핵심 기술을 함께 다룬다. 후반부에서는 온라인 학습 자료, 자격증 정보 및 비디오 튜토리얼 등 유용한 정보를 소개한다.
이 책에서 다루는 내용
◆ 간단한 단계와 예제를 다루며 유니티에서 C# 스크립트를 생성 및 구현
◆ 생동감 있는 게임을 만들기 위한 3D 사고방식 개발
◆ C#을 사용해 플레이어 컨트롤러와 발사체 같은 기본적인 게임 메카닉 생성
◆ 인터페이스, 추상 클래스, 클래스 확장을 사용해 코드를 플러그형 구성 요소로 분할
◆ 스택, 큐, 예외, 오류 처리 등과 같은 핵심 C# 개념 숙지
◆ 텍스트, XML 및 JSON 데이터를 처리해 게임 데이터를 저장하고 로드
◆ 게임용 인공지능의 기본 개념 이해와 적의 동작을 제어하는 방법 구현
이 책의 대상 독자
프로그래밍이나 C#의 기본 사항을 다룬 적이 없는 초보자를 대상으로 하는 책이다. 하지만 다른 언어나 C#에 능숙한 전문가 수준의 독자라도 실제 유니티 게임 개발을 하는데 도움이 될 것이다.
이 책의 구성
1장. ‘개발 환경 이해’에서는 유니티 설치 과정, 에디터의 주요 기능, C#과 유니티 관련 주제에 대한 문서 검색을 우선 다룬다. 또한 유니티 내부에서 C# 스크립트를 생성하는 방법을 알아보고, 모든 코드의 편집을 진행하게 될 애플리케이션인 비주얼 스튜디오를 살펴본다.
2장. ‘프로그래밍의 구성 요소’에서는 프로그래밍의 최소 단위 개념을 제시하면서 변수, 메서드, 클래스의 개념을 실생활과 연관 지어 설명함으로써 이해를 돕는다. 또한 간단한 디버깅 기술, 올바른 서식 및 주석 작성, 유니티가 C# 스크립트를 컴포넌트로 변환하는 방법 등도 살펴본다.
3장. ‘변수, 타입 및 메서드 살펴보기’에서는 2장에서 다룬 기본 개념을 더 깊이 살펴보고자 C# 데이터 타입, 네이밍 규칙, 액세스 한정자 등 프로그래밍 기초에 필요한 모든 것을 배운다. 또한 메서드 작성 방법, 매개변수 추가 방법, 반환 타입 사용 방법 등을 익히고, (MonoBehaviour) 클래스에 속하는 기본 유니티 메서드를 소개하면서 마무리한다.
4장. ‘제어 흐름과 컬렉션 타입’에서는 if-else 문과 switch문의 코드에서 결정을 내리는 일반적인 접근 방식을 소개한다. 그 다음에는 배열, 리스트, 딕셔너리를 다룬 후, 컬렉션 타입을 순회하는 반복문을 살펴본다. 마지막으로는 조건부 반복문과 특수한 C# 데이터 타입인 열거형을 다룬다.
5장. ‘클래스, 구조체 및 OOP 작업’에서는 먼저 클래스와 구조체를 생성하고 인스턴스화하는 방법을 자세히 다룬다. 이어서 생성자를 만들고, 필드와 메서드를 추가하며, 서브클래싱(subclassing) 및 상속의 기초를 익힌다. 끝으로 객체지향 프로그래밍을 포괄적으로 설명하고, C#에 어떻게 적용할지 알아본다.
6장. ‘유니티 실행하기’에서는 C# 구문에서 벗어나 게임 디자인, 레벨 구축, 유니티 주요 도구 등을 살펴본다. 우선 게임 디자인 문서의 기본 개념을 다룬 후 레벨을 만들고 조명을 추가한다.
7장. ‘이동, 카메라 제어 및 충돌’에서는 플레이어 오브젝트를 이동시키는 다양한 방법과 3인칭 시점 카메라의 설정 방법을 설명한다. 또한 유니티 물리(Unity physics)를 활용한 좀 더 사실적인 이동 효과의 구현, 콜라이더 컴포넌트 작업 및 씬(scene) 내에서의 상호작용 캡처를 다룬다.
8장. ‘게임 메카닉 스크립팅’에서는 게임 메카닉의 개념과 효과적인 구현 방법을 소개한다. 우선 간단한 점프 동작을 추가하고, 슈팅 메카닉을 생성한 다음, 아이템 수집을 처리하는 로직을 추가해 이전 장의 코드를 빌드한다.
9장. ‘기본 AI와 적의 행동’에서는 게임 인공지능의 개념과 Hero Born에 적용할 콘셉트를 간략히 살펴본다. 이 장에서는 유니티의 내비게이션, 레벨 지오메트리 및 내비게이션 메시, 스마트 에이전트, 자동화된 적의 이동을 다룬다.
10장. ‘타입, 메서드 및 클래스의 재고찰’에서는 C# 언어의 다양성과 범위를 더 깊이 이해할 수 있도록 데이터 타입, 중급 메서드 기능, 복잡한 클래스에 사용할 수 있는 추가 동작을 더 자세히 살펴본다.
11장. ‘스택, 큐, 해시셋’에서는 중급 컬렉션 타입과 기능을 다룬다. 따라서 스택, 큐, 해시셋 각각의 사용과 적합한 개발 시나리오를 다양하게 제시한다.
12장. ‘데이터의 저장, 로드 및 직렬화’에서는 게임 정보를 처리할 수 있도록 준비하고자 파일 시스템과 파일의 생성, 삭제, 업데이트 작업을 다룬다. 또한 XML, JSON, 이진 데이터 등과 같은 다양한 데이터 유형을 살펴보고, 마지막 부분에서는 C# 객체를 데이터 포맷으로 직렬화한다.
13장. ‘제네릭, 델리게이트 및 기타 사항 살펴보기’에서는 C# 언어의 중급 기능을 소개하고, 해당 기능을 실제 시나리오에 어떻게 적용할지 자세히 알아본다. 제네릭 프로그래밍의 개요를 시작으로 델리게이트, 이벤트, 예외 처리와 같은 개념을 다룬다.
14장. ‘이 책을 마친 후’에서는 이 책 전반에서 다룬 주요 주제를 복습하고, C#과 유니티를 좀 더 학습할 수 있는 자료를 제공한다. 온라인 학습 자료, 자격증 정보, 저자가 추천하는 비디오 튜토리얼 채널 등이 포함된다.
상세 이미지
목차
목차
- 1장. 개발 환경 이해
- 기술 요건
- 유니티 2022 시작하기
- 맥OS 사용
- 새 프로젝트 생성
- 에디터 탐색
- 유니티에서 C# 사용
- C# 스크립트 작업
- 비주얼 스튜디오 소개
- C# 파일 동기화
- 문서 탐색
- 유니티 문서에 액세스
- C# 리소스 찾기
- 요약
- 내용 점검: 스크립트 다루기
- 내용 점검: 스크립트 다루기
- 2장. 프로그래밍의 구성 요소
- 변수의 정의
- 이름의 중요성
- 플레이스홀더의 역할을 하는 변수
- 메서드의 이해
- 코드를 실행시키는 메서드
- 메서드도 플레이스홀더다
- 클래스 소개
- 일반적인 유니티 클래스
- 클래스는 청사진
- 클래스 간 통신
- 주석 작업
- 한 줄 주석
- 여러 줄 주석
- 주석 추가
- 구성 요소 넣기
- 컴포넌트가 되는 스크립트
- MonoBehavior의 지원
- 요약
- 내용 점검: C# 구성 요소
- 변수의 정의
- 3장. 변수, 타입 및 메서드 살펴보기
- 올바른 C# 작성
- 코드 디버깅
- 변수의 이해
- 변수 선언
- 액세스 한정자 사용
- 타입 작업
- 타입 정리
- 변수 네이밍
- 변수 범위의 이해
- 연산자 소개
- 산술 및 할당
- 메서드 정의
- 메서드 선언
- 네이밍 규칙
- 메서드의 논리적 우회
- 매개변수 지정
- 반환 값 지정
- 반환 값의 사용
- 기본 유니티 메서드 분석
- 요약
- 내용 점검: 변수와 메서드
- 4장. 제어 흐름과 컬렉션 타입
- 선택문
- if-else문
- switch문
- 내용 점검 1: if, and, but
- 컬렉션 간단히 살펴보기
- 배열
- 리스트
- 딕셔너리
- 내용 점검 2: 컬렉션의 모든 것
- 반복문
- for 루프
- foreach 루프
- while 루프
- 무한 루프 저 너머로
- 요약
- 선택문
- 5장. 클래스, 구조체 및 OOP 작업
- OOP 소개
- 클래스 정의
- 클래스 객체의 인스턴스화
- 클래스 필드 추가
- 생성자 사용
- 클래스 메서드 선언
- 구조체 선언
- 참조 타입과 값 타입의 이해
- 참조 타입
- 값 타입
- 객체지향형 사고방식의 통합
- 캡슐화
- 상속
- 컴포지션
- 다형성
- OOP 내용 정리
- OOP를 유니티에 적용하기
- 객체는 클래스의 동작
- 컴포넌트에 액세스
- 요약
- 내용 점검: OOP
- 6장. 유니티 실행하기
- 게임 디자인 기초 작업
- 게임 디자인 문서
- Hero Born 원페이지
- 레벨 만들기
- 프리미티브 생성
- 3D 공간에서의 사고방식
- 머티리얼
- 화이트 박싱
- 조명의 기초
- 조명 생성
- Light 컴포넌트 속성
- 유니티의 애니메이션
- 코드에서 애니메이션 생성
- 유니티 애니메이션 창에서 애니메이션 생성
- 키프레임 녹화
- 커브와 탄젠트
- 요약
- 내용 점검: 기본적인 유니티의 특징
- 게임 디자인 기초 작업
- 7장. 이동, 카메라 제어 및 충돌
- 플레이어 이동 관리하기
- Transform 컴포넌트를 사용해 플레이어 이동하기
- 벡터의 이해
- 플레이어 입력 받기
- 플레이어 이동
- 카메라 동작 스크립팅
- 유니티 물리 시스템으로 작업하기
- 모션의 리지드바디 컴포넌트
- 콜라이더와 충돌
- 콜라이더 트리거의 사용
- 물리 요약
- 요약
- 내용 점검: 플레이어 제어와 물리
- 8장. 게임 메카닉 스크립팅
- 점프 추가
- 열거 타입
- 레이어 마스크로 작업하기
- 발사체 발사
- 오브젝트의 인스턴스화
- 슈팅 메카닉 추가
- 오브젝트 빌드업 관리
- 게임 매니저 생성
- 플레이어 속성 추적
- get과 set 접근자
- 아이템 수집 업데이트
- GUI 생성
- 플레이어 스탯 표시
- 승패 조건
- 지시문과 네임스페이스를 사용해 일시 정지 및 재시작하기
- 요약
- 내용 점검: 메카닉을 활용한 작업
- 점프 추가
- 9장. 기본 AI와 적의 행동
- 유니티의 3D 공간 내비게이팅
- 내비게이션 컴포넌트
- 적 에이전트 설정
- 적 에이전트의 이동
- 절차적 프로그래밍
- 정찰 위치 참조
- 적의 이동
- 적의 게임 메카닉
- 수색과 파괴: 에이전트의 대상 변경
- 플레이어의 체력 감소
- 탄환의 충돌 감지
- 리팩터링 및 DRY 유지
- 요약
- 내용 점검: AI와 내비게이션
- 액세스 한정자
- const와 readonly 키워드
- static 키워드 사용
- 메서드 다시 살펴보기
- 메서드 오버로딩
- ref 매개변수
- out 매개변수
- 중급 OOP
- 인터페이스
- 추상 클래스
- 클래스 확장
- 네임스페이스 충돌과 타입 별칭
- 요약
- 내용 점검: 레벨 업
- 스택
- Pop과 Peek
- 공용 메서드
- 큐로 작업
- 추가, 제거 및 피크
- 공용 메서드
- 해시셋 사용
- 연산 수행
- 중급 컬렉션 정리
- 요약
- 내용 점검: 중급 컬렉션
- 데이터 포맷 소개
- XML 분석
- JSON 분석
- 파일 시스템의 이해
- 에셋 경로로 작업
- 디렉터리의 생성과 삭제
- 파일의 생성, 업데이트, 삭제
- 스트림으로 작업하기
- 스트림 리소스의 관리
- StreamWriter와 StreamReader의 사용
- XMLWriter 생성하기
- 스트림 자동으로 닫기
- 데이터 직렬화
- XML의 직렬화 및 역직렬화
- JSON의 직렬화 및 역직렬화
- 데이터의 정리
- 요약
- 내용 점검: 데이터 관리
- 제네릭 소개
- 제네릭 객체
- 제네릭 메서드
- 타입 매개변수 제약 조건
- 유니티 객체에 제네릭 추가
- 델리게이트
- 디버그 델리게이트 만들기
- 델리게이트 타입의 매개변수
- 이벤트 발생
- 이벤트 생성 및 호출
- 이벤트 구독 처리
- 이벤트 구독 정리
- 예외 처리
- 예외 발생
- try-catch문의 사용
- 요약
- 내용 점검: 중급 C#
- 심화 학습
- 객체지향 프로그래밍 다시 살펴보기
- 디자인 패턴 입문
- 유니티 프로젝트 접근하기
- 기타 유니티 기능
- 향후 과정
- C# 리소스
- 유니티 리소스
- 유니티 자격증
- 과제: 커뮤니티에서 나의 실력 검증해보기
도서 오류 신고
정오표
정오표
[p.102 4행]
public int GenerateCharacter()
->
public void GenerateCharacter()
[P.371 : 코드 14행, 15행]
ItemText.text += _itemsCollected;
HealthText.text += _playerHP;
->
삭제