Top

유니티 5.x와 함께하는 C# 첫걸음 [C#을 배우고 싶은 유니티 개발자를 위한]

  • 원서명Learning C# by Developing Games with Unity 5.x - Second Edition (ISBN 9781785287596)
  • 지은이그렉 루코섹(Greg Lukosek)
  • 옮긴이김홍중
  • ISBN : 9788960779358
  • 25,000원
  • 2016년 11월 30일 펴냄
  • 페이퍼백 | 264쪽 | 188*235mm
  • 시리즈 : acorn+PACKT

책 소개

요약

유니티로 게임을 만들고 싶지만 C# 프로그래밍 언어를 잘 모르는 초보 프로그래머에게 C#을 차근차근 알려준다. 유니티를 사용해 간단한 게임을 만들어가면서 가장 기초적인 개념인 변수와 메소드부터 컬렉션, 흐름 제어, 루프를 거쳐 싱글턴 패턴, 객체지향 프로그램까지 C#의 핵심 개념을 소개한다. 책을 다 읽고 나면 유니티로 게임을 만들 때 쓰이는 프로그래밍 언어인 C#의 기초를 확실하게 다질 수 있다.

이 책에서 다루는 내용

■ 변수, 메소드와 C# 문법의 기초

■ 게임 아이디어를 실제 프로젝트로 바꿔줄 다양한 기술

■ 루프와 컬렉션을 효율적으로 사용해서 코드 양 축소 방법

■ 게임 개발에 객체지향 프로그래밍의 원리 활용

■ 끝없는 레벨 생성

■ 보기 좋고 제대로 동작하는 UI 시스템의 구상과 구현

■ 다른 사용자와의 게임 공유 방법

이 책의 대상 독자

프로그래밍 경험이 없는 초보 유니티 개발자를 대상으로 한다. C# 스크립트나 코드를 작성하는 방법을 배워서 게임을 만들고 싶은 유니티 개발자라면 이 책이 안성맞춤이다.

이 책의 구성

1장, ‘숨겨진 스크립팅 능력 발견과 개발 환경 준비’에서는 유니티 스크립트 작성에 첫 발을 들이면서 느낄 수 있는 마음의 부담을 덜어준다.
2장, ‘유니티 스크립트의 구성 요소’에서는 첫 번째 실행 코드를 만들어봄으로써 코드 작성 기술을 향상하는 데 도움을 준다.
3장, ’변수 탐구’에서는 C# 변수를 만들고 사용하는 방법과 유니티 Inspector에서 변숫값을 수정하는 방법을 배운다.
4장, ‘메소드 탐구’에서는 메소드 안에서 쓰이는 코드 블록과 변수의 중요성을 이해할 수 있도록 메소드의 개념과 활용 방법을 자세하게 살펴본다.
5장, ‘리스트, 배열, 딕셔너리’에서는 다양한 값을 한 번에 저장할 수 있는 리스트, 배열, 딕셔너리 같은 조금 더 복잡한 개념을 알아본다.
6장, ‘루프’에서는 유용한 작업을 할 수 있게 지정한 코드를 반복해서 실행하도록 유니티에 ‘요청’하는 방법을 살펴본다.
7장, ’변수와 메소드를 담는 객체’에서는 코드를 체계적으로 구성하는 방법과 객체지향 프로그래밍이라는 주제를 자세히 알아본다.
8장, ‘아이디어에서 개발에 이르는 과정’에서는 아이디어를 코딩 직전 단계의 프로젝트로 만드는 방법과 복잡한 메카닉을 작게 쪼개는 방법을 배운다.
9장, ’첫 게임을 향한 출발’에서는 아이디어를 실제 유니티 프로젝트로 만든다.
10장, ’GameManager’에서는 싱글턴 기법의 기초와 함께 게임플레이 루프를 사용해서 작업하는 방법을 알아본다.
11장, ‘레벨’에서는 다시 사용할 수 있는 레벨의 조각을 만드는 방법과 레벨 조각을 사용해서 끝없이 플레이할 수 있는 게임을 만드는 방법을 살펴본다.
12장, ‘사용자 인터페이스’에서는 게임의 사용자 인터페이스를 구성하고 구현하는 방법을 설명한다.
13장, ‘콜렉터블과 다음 단계’에서는 콜렉터블과 함께 유니티 세션 중에서 데이터를 저장하는 방법을 중점적으로 알아본다.

본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.

저자/역자 소개

지은이의 말

어서 오시라, 미래의 게임 개발자여. 지금 이 책을 읽고 있는 독자라면 분명 훌륭한 게임 엔진인 유니티와 C# 프로그래밍에 호기심이 가득한 사람일 것이다. 이 책은 C# 프로그래밍을 배우는 여정이라 할 수 있다. 이제 프로그래밍의 기초에서 시작해 제대로 동작하는 2D 플랫폼 게임을 만들면서 끝나는 여정을 함께 걸어보자.

지은이 소개

그렉 루코섹(Greg Lukosek)

폴란드의 슐레지엔에서 태어나고 자랐다. 8살 때 부모님이 그와 형에게 코모도어 C64를 선물했던 그 날, 프로그래밍과 사랑에 빠졌다. 그 후로 간단한 코드를 작성해보며 시간을 보내곤 했고 컴퓨터를 쓸 수 없을 땐 메모지에 코드를 작성하기도 했다.
폴란드의 시에미아노비체 실롱스키에 있는 ZSTiO Meritum에서 기계 공학을 전공했다. 프로그래밍 기술은 모두 열정과 노력을 통해 독학으로 터득했다.
2003년, 자신의 삶을 바꿔줄 운명적인 사랑 카시아를 만났다. 그들은 모험을 찾아 런던으로 향했고 그곳에 정착했다.
3D 아티스트로 일하기 시작하면서 몇 년간 프로그래밍에서 손을 뗐지만, 마음속 깊은 곳에는 다시 게임 프로그래밍을 하고 싶다는 욕구가 남아 있었다. 3D 아티스트로 일하는 동안 유니티를 처음 접해 인터랙티브 시각화 프로젝트에 적용했고, 얼마 지나지 않아 다시 프로그래밍을 시작했다.
프로그래밍에 대한 사랑이 3D 그래픽에 대한 사랑을 뛰어넘었던 탓에 결국 3D 아티스트로 일해온 경력을 내던지고 코드를 작성하는 직업으로 돌아왔다. 지금은 8살 이후로 정말 하고 싶던 일인 게임 개발을 하고 있다.
요즘 그는 아내 카시아, 아들 애덤과 함께 영국의 작은 마을인 샌디에 살고 있다.

옮긴이의 말

한동안 모바일 게임 엔진의 절대 강자로 군림했던 유니티는 최근 막강한 성능을 앞세운 언리얼 등 경쟁자의 거센 공세로 조금씩 설 자리를 잃고 있다. 하지만 입지가 조금 줄었을 뿐 아직 굳건하게 강자의 자리를 지키고 있다. 특히 소규모 개발팀 또는 독립 개발자에게 유니티는 여전히 괜찮은 선택이다.
게임 엔진으로 유니티를 선택했다면 유니티의 사용법도 익히고, 스크립트 작성에 필요한 프로그래밍 언어도 배워야 하며, 게임에 필요한 리소스도 마련해야 한다. 프로그래밍 언어는 게임을 만들 때 필요한 수많은 지식 중 일부일 뿐이지만, 절대 소홀히 할 수 없는 중요한 부분이다. 이 책은 유니티로 게임을 만들 때 사용할 수 있는 C#, 자바스크립트, 부(Boo) 세 개의 프로그래밍 언어 중 가장 강력한 언어인 C#의 기초를 소개하는 책이다. 단순히 설명만 늘어놓지 않고 유니티 5.x를 사용해 간단한 게임을 만들어 보면서 C#의 개념을 하나하나 소개하는 방식으로 구성되어 있다. 이 책의 내용이 C#의 전부라고는 할 수 없지만, 유니티에서 C#으로 게임을 개발할 때 필요한 기본 개념은 부족함 없이 소개하고 있다.
게임을 개발하는 여정은 생각보다 길고 외롭다. C# 프로그래밍 언어는 길 위에 놓인 하나의 장애물일 뿐이다. 앞으로 극복해야 할 장애물이 더 많겠지만, 꾸준히 헤쳐나가다 보면 자신만의 종착점에 도착할 수 있으리라 믿는다. 그리고 그 종착점이 많은 사람을 행복하게 하는 게임이면 좋겠다.

Bon voyage!

옮긴이 소개

김홍중

중앙대학교 컴퓨터공학과를 졸업했다. 재학 중 삼성소프트웨어 멤버십 회원으로 활동하다가 삼성전자에 입사했다. DM 연구소, VD 사업부에 근무하면서 윈도우 CE, 임베디드 리눅스 환경에서 PDA, 셋탑박스, DTV 등 다양한 기기에 들어가는 애플리케이션을 개발했다.
2007년, 답답한 삶을 털어내고 훌쩍 미국으로 날아가 한껏 여유를 즐기다가 빈손으로 돌아왔다. 이후 웹호스팅사, 게임 개발사, 스타트업 등 여러 회사를 거치며 다양한 iOS 앱을 개발했고 한동안 번역가, 프리랜서로 연명하기도 했다. 언제 이룰 수 있을지 모르지만, 독립 개발자로 우뚝 서는 꿈을 포기하지 않고 있다.
에이콘출판사에서 출간한 『게임프로그래밍 알고리즘- 게임 프로그래머를 위한 실전 알고리즘 원리와 기법』(2015), 『C# 실전 예제로 배우는 유니티 3D 게임 스크립트』(2015) 등을 번역했다.

목차

목차
  • 1장. 숨겨진 스크립팅 능력 발견과 개발 환경 준비
    • 책을 읽기 전에 알아야 할 내용
    • 스크립트 공포증 극복
    • 유니티 다운로드
      • 무료 라이선스 획득
    • 게임 오브젝트에 행동 추가
      • 유니티 문서고
      • 스크립팅 레퍼런스를 전부 알아야 할까?
    • C# 문서는 어디서 찾아야 하지? C# 문서가 필요하긴 할까?
      • 도움을 청할 수 있는 유니티 커뮤니티
    • C# 스크립트 파일
      • 너무 많은 파일로 인한 혼란
      • Project 탭의 모습이 다른 이유
    • C# 스크립트 파일 생성
    • MonoDevelop 코드 편집기
      • MonoDevelop과 유니티의 C# 파일 동기화
      • MonoDevelop에서 LearningScript 파일 열기
        • 파란색으로 나타나는 네임스페이스
        • 녹색으로 나타나는 클래스 정의
      • 유니티에서 스크립트 파일을 만들 때 주의할 점
      • 동기화 문제 수정
      • 게임 오브젝트에 스크립트 추가
    • 인스턴스
    • 요약

  • 2장. 유니티 스크립트의 구성 요소
    • 변수의 개념과 역할
      • 변수의 이름을 짓는 법
      • 변수 이름은 값의 대용품일 뿐이다
      • 변수의 동작 방식
        • 선언
        • 대입
      • Play 클릭!
      • 변수 값 변경
      • 퍼블릭 변수를 사용할 때 주의할 점
    • 메소드
      • “함수”가 아닌 “메소드”라는 용어를 사용하는 이유
      • 메소드 이름도 대용품이다
    • 클래스
      • 상속
    • Start(), Update(), Awake() 메소드와 실행 순서
    • 닷 문법을 사용해서 정보를 주고받는 컴포넌트
      • 닷의 정체
    • 의사 결정 코드
      • 조건을 뒤집는 부정 논리 연산자
      • If 문으로 여러 개의 조건 확인
      • 복잡한 의사 결정에 쓰이는 else if
      • 사용자의 입력을 바탕으로 의사 결정
    • 종이와 연필은 강력한 도구다
    • 요약

  • 3장. 변수 탐구
    • 올바른 C# 문 작성 방법
    • 유니티 Inspector에 나타나는 컴포넌트의 속성
      • 컴포넌트의 속성으로 바뀌는 변수
      • 스크립트 이름과 변수 이름이 살짝 바뀌는 이유
    • Inspector 창에서 속성의 값 변경
      • Inspector 창에 퍼블릭 변수 표시
    • 프라이빗 변수
    • 변수 이름을 제대로 짓는 방법
    • 소문자로 시작하는 변수 이름
    • 여러 단어로 이뤄지는 변수 이름
    • 변수와 변수 형식 선언
      • 가장 많이 쓰이는 기본 변수 형식
    • 변수를 선언하면서 값 대입
    • 변수를 선언하는 위치의 중요성
    • 변수를 사용할 수 있는 위치를 결정하는 변수의 범위
    • 요약

  • 4장. 메소드 탐구
    • 스크립트에서 메소드 활용
    • 메소드 이름을 제대로 짓는 방법
      • 대문자로 시작하는 메소드 이름
      • 여러 단어로 이뤄지는 메소드 이름
      • 괄호도 메소드 이름의 일부다
    • 올바른 메소드 정의
      • 메소드 정의의 최소 요건
    • 괄호가 필요한 이유
    • 메소드의 파라미터 지정
      • 파라미터의 수
    • 메소드에서 값 리턴
      • 값 리턴
        • 예제 코드
    • 요약

  • 5장. 리스트, 배열, 딕셔너리
    • 배열
      • 배열 선언
    • 리스트에 아이템 저장
      • 리스트의 기본 연산
    • List<T>와 배열
    • 배열이나 List<T>에서 데이터를 가져오는 방법
      • 크기 확인
    • ArrayList
    • 딕셔너리
      • 해시테이블의 값 접근
      • 해시테이블의 내용을 확인하는 방법
    • 요약

  • 6장. 루프
    • 루프
    • foreach 루프
    • for 루프
      • 예제
    • while 루프
    • while 루프와 for 루프
    • 루프와 다른 문의 혼용
    • 모듈로
    • 배열 안의 데이터 검색
    • 루프 중단
    • 요약

  • 7장. 변수와 메소드를 담는 객체
    • 객체 활용
      • 몇 가지 사실
      • 예제
    • 객체의 인스턴스화
    • 갈 길이 멀다
    • 객체 안의 메소드 활용
    • 사용자 정의 생성자
    • 오버로딩
    • 요약

  • 8장. 아이디어에서 개발에 이르는 과정
    • 처음부터 끝없는 구상의 늪에 빠지지 말자
    • 아이디어
      • 게임의 메카닉과 핵심 요소
    • 복잡한 아이디어를 작게 나누기
    • 신비한 행성의 제이크 게임의 기능 목록
      • 자동 레벨 생성
      • 2D 캐릭터 애니메이션
      • 물리
      • 마우스와 터치 제어
      • 수집 대상과 장애물
      • 점수
      • 사용자 인터페이스
    • 타깃 플랫폼
    • 화면 해상도
    • 요약

  • 9장. 첫 게임을 향한 출발
    • 새로운 유니티 프로젝트 설정
      • 백업
      • 프로젝트를 깔끔하게 유지하는 방법
    • 플레이어 프리팹 준비
      • Rigidbody2D
      • CircleCollider2D
    • PlayerController
    • 사용자 입력
      • 점프
    • Animator
      • 달리기
    • 예제 코드
      • PlayerController.cs
    • 요약

  • 10장. GameManager
    • 게임플레이 루프
    • 싱글턴 클래스
    • 게임 시작
    • 입력 키 설정
    • 트리거
    • 게임 다시 시작
    • 플레이어의 시작 위치 설정
    • 예제 코드
    • 요약

  • 11장. 레벨
    • 자동 생성한 레벨과 의도적으로 만든 레벨
      • 레벨 청크 생성
      • LevelGenerator 클래스 구상
      • LevelGenerator 작성
      • 주석 작성
    • 레벨 조각의 복사본 생성
    • 인스턴스화
    • Vector3
    • LevelGenerator 테스트
    • 레벨 확장
    • 예제 코드
    • 요약

  • 12장. 사용자 인터페이스
    • 유니티 UI
      • 깔끔한 뷰 UI 구성
      • 화면 해상도
      • 이벤트 인식
    • 버튼
      • 간단한 버튼의 구성
      • 이미지
      • Button 컴포넌트
      • 상호작용
      • 버튼 액션
    • Canvas를 감추거나 표시하는 방법
    • 참조 예외
    • 게임 뷰
      • 게임 오버
    • 예제 코드
    • 요약

  • 13장. 콜렉터블 그리고 다음 단계
    • 콜렉터블
    • 동전 프리팹
      • Collectable 클래스
    • 최고 점수와 데이터 유지
    • Update 함수와 UI 값
    • 다음 단계
    • 예제 코드

도서 오류 신고

도서 오류 신고

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

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

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