Top

유니티로 배우는 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#과 유니티를 좀 더 학습할 수 있는 자료를 제공한다. 온라인 학습 자료, 자격증 정보, 저자가 추천하는 비디오 튜토리얼 채널 등이 포함된다.

상세 이미지

저자/역자 소개

지은이의 말

유니티(Unity)는 아마추어뿐만 아니라 메이저 게임 개발사와 영화 제작사를 대상으로 하는 세계적으로 인기 있는 게임 엔진 중 하나다. 유니티는 3D 도구로 알려져 있지만, 2D 게임 및 가상 현실에서 포스트 프로덕션(post-production)과 크로스 플랫폼(cross-platform) 퍼블리싱 지원에 이르기까지 다양한 기능을 갖추고 있다.
개발자들은 드래그 앤 드롭 인터페이스와 기본으로 제공되는 기능을 선호하지만, 유니티는 동작과 게임 메카닉을 위해 사용자 정의 C# 스크립트를 작성할 수 있다는 점에서도 매력적이다. 경력이 풍부한 프로그래머는 C# 코드를 배우는 데 큰 어려움이 없겠지만, 경험이 없는 사람에게는 결코 쉽지 않은 일이다. 이 책은 바로 그런 초심자들을 위해 쓰여졌으며, 재미있고 플레이 가능한 프로토타입을 만들면서 프로그래밍과 C# 언어의 기초를 처음부터 배우도록 해준다.

지은이 소개

해리슨 페론(Harrison Ferrone)

일리노이주 시카고에서 태어나 다양한 곳에서 성장했다. 마이크로소프트, 프라이스워터하우스쿠퍼스(PricewaterhouseCoopers)와 소규모 스타트업에서 근무했고, 요즘에는 링크드인 러닝(LinkedIn Learning), 플루럴사이트(Pluralsight)에서 교육 콘텐츠를 제작하거나 레이 웬더리치(Ray Wenderlich) 웹 사이트에서 기술 편집을 담당하고 있다.
콜로라도 대학교와 컬럼비아 칼리지 시카고(Columbia College Chicago)를 졸업했으나 학위가 그의 이력에 미친 영향은 미미하다.
몇 년간 iOS와 유니티 개발자로 일했지만, 교육 분야로 진로를 바꾼 후 줄곧 이 분야에 몸담고 있다. 대부분의 강좌에서 온라인 소통을 다루지 않는 점을 아쉽게 생각하고 있다.

옮긴이의 말

이 책을 선택한 독자라면 게임 개발에 관심이 많으실 거라 생각합니다. 아마도 게임을 플레이하면서 흥미를 느끼고 난 후, ‘나도 한번 게임을 만들어보고 싶다’라는 생각을 해보셨을 겁니다. 저 역시, 대학 시절 <스타크래프트>라는 게임의 매력에 빠져들었고 이후 게임 프로그래머로 첫 발을 내디뎠습니다.
당시에는 게임을 개발하려면 수학적인 계산이나 복잡한 프로그래밍 기술이 필요했기 때문에 초보자가 도전하기 쉽지 않았습니다. 하지만 유니티는 물리 엔진, 애니메이션 시스템, 그래픽 라이브러리 등을 제공해 초보자도 손쉽게 접근할 수 있습니다. 이로 인해 게임 개발의 진입 장벽이 낮아졌고, 방대한 작업이 필요했던 기능도 순식간에 구현할 수 있게 됐습니다. 게다가 유니티는 크로스 플랫폼을 지원해서 플랫폼별로 개발하는 데 드는 시간과 비용을 획기적으로 줄여줍니다. 유니티가 아우르는 플랫폼에는 PC와 안드로이드(Android), iOS는 물론이고 닌텐도 스위치, 플레이스테이션, XBOX 360과 같은 콘솔용 게임 기기도 포함됩니다.
만약 누군가가 저에게 “게임을 만들려면 무엇을 공부해야 할까요?”라고 묻는다면, 저는 망설임 없이 유니티부터 공부하라고 할 것입니다. 유니티는 직관적인 인터페이스, 개발의 편리성, 높은 생산성, 에셋스토어 등과 같은 장점 덕분에 가장 많이 사용되며, 초보 게임 개발자도 쉽고 빠르게 게임을 제작할 수 있는 엔진이기 때문입니다.
이 책은 C# 프로그래밍 언어를 유니티 게임 엔진과 함께 배우고자 하는 초보자와 중급자를 대상으로 합니다. 예제를 따라하는 것만으로 3D 게임을 만들 수 있을 뿐만 아니라, C#과 유니티의 핵심 기술도 자연스럽게 익힐 수 있습니다. 이 책으로 독자 여러분이 C#과 유니티의 기초를 다지고, 더 나아가 실무에서 멋진 게임을 개발할 수 있는 초석을 마련하면 좋겠습니다.
이지성

옮긴이 소개

이지성

고려대학교 컴퓨터정보통신대학원을 졸업했으며, 석사 논문을 주제로 특허를 받았다. 앤앤지㈜와 ㈜엠게임에서 게임 클라이언트 프로그래머로 MMORPG 게임을 개발했다. 이후 응용 프로그래머로 전향해 유니닥스㈜에서 PDF 에디터, 디지털 교과서 등을 개발했다. 현재는 자율주행 및 전자장비 개발 회사인 ㈜에스더블유엠에서 책임 연구원으로 재직 중이다.

송정은

평소 프로그램과 영어 두 분야 모두에 관심이 많아 세종대학교에서 컴퓨터공학을 전공한 후, 국제영어대학원대학교(IGSE)에 전액 장학생으로 입학해 석사 학위를 취득했다. 이후 빅데이터, 인공지능, 게임 개발 등 다양한 IT 분야의 원문들을 발 빠르게 섭렵하며 온라인

목차

목차
  • 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와 내비게이션

  • 10장. 타입, 메서드 및 클래스의 재고찰
    • 액세스 한정자
      • const와 readonly 키워드
      • static 키워드 사용
    • 메서드 다시 살펴보기
      • 메서드 오버로딩
      • ref 매개변수
      • out 매개변수
    • 중급 OOP
      • 인터페이스
      • 추상 클래스
      • 클래스 확장
    • 네임스페이스 충돌과 타입 별칭
    • 요약
    • 내용 점검: 레벨 업

  • 11장. 스택, 큐, 해시셋
    • 스택
      • Pop과 Peek
      • 공용 메서드
    • 큐로 작업
      • 추가, 제거 및 피크
      • 공용 메서드
    • 해시셋 사용
      • 연산 수행
    • 중급 컬렉션 정리
    • 요약
    • 내용 점검: 중급 컬렉션

  • 12장. 데이터의 저장, 로드 및 직렬화
    • 데이터 포맷 소개
      • XML 분석
      • JSON 분석
    • 파일 시스템의 이해
      • 에셋 경로로 작업
      • 디렉터리의 생성과 삭제
      • 파일의 생성, 업데이트, 삭제
    • 스트림으로 작업하기
      • 스트림 리소스의 관리
      • StreamWriter와 StreamReader의 사용
      • XMLWriter 생성하기
      • 스트림 자동으로 닫기
    • 데이터 직렬화
      • XML의 직렬화 및 역직렬화
      • JSON의 직렬화 및 역직렬화
    • 데이터의 정리
    • 요약
    • 내용 점검: 데이터 관리
  • 13장. 제네릭, 델리게이트 및 기타 사항 살펴보기
    • 제네릭 소개
      • 제네릭 객체
      • 제네릭 메서드
      • 타입 매개변수 제약 조건
      • 유니티 객체에 제네릭 추가
    • 델리게이트
      • 디버그 델리게이트 만들기
      • 델리게이트 타입의 매개변수
    • 이벤트 발생
      • 이벤트 생성 및 호출
      • 이벤트 구독 처리
      • 이벤트 구독 정리
    • 예외 처리
      • 예외 발생
      • try-catch문의 사용
    • 요약
    • 내용 점검: 중급 C#

  • 14장. 이 책을 마친 후
    • 심화 학습
    • 객체지향 프로그래밍 다시 살펴보기
    • 디자인 패턴 입문
    • 유니티 프로젝트 접근하기
    • 기타 유니티 기능
    • 향후 과정
      • C# 리소스
      • 유니티 리소스
      • 유니티 자격증
    • 과제: 커뮤니티에서 나의 실력 검증해보기
  • 도서 오류 신고

    도서 오류 신고

    에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

    오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

    (예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

    정오표

    정오표

    [p.102 4행]
    public int GenerateCharacter()
    ->
    public void GenerateCharacter()

    [P.371 : 코드 14행, 15행]
    ItemText.text += _itemsCollected;
    HealthText.text += _playerHP;
    ->
    삭제