Top

[2D & 3D 게임 UI 제작을 위한]
유니티 NGUI 게임 프로젝트

  • 원서명Learning NGUI for Unity (ISBN 9781783552979)
  • 지은이찰스 피어슨(Charles Pearson)
  • 옮긴이김세중
  • ISBN : 9788960778054
  • 35,000원
  • 2015년 12월 24일 펴냄
  • 페이퍼백 | 408쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 게임 개발 프로그래밍

책 소개

요약

NGUI는 강력하고 최적화된, 견고한 UI 시스템이다. 유니티에서 GUI를 만들 때 사실상 표준으로 사용되고 있다. NGUI는 성능을 크게 저하시키지 않고도 멋지고 복잡한 사용자 인터페이스를 만들 수 있게 해준다. 이 책은 실용적인 튜토리얼로서, 완전하게 기능하고, 로컬라이즈된 메인 메뉴와 2D, 3D 인게임 사용자 인터페이스(UI)를 만드는 과정으로 안내한다.

이 책에서 다루는 내용

■ 커스터마이즈 가능한 2D와 3D 인게임 UI 구성
■ NGUI를 사용한 옵션 저장, 볼륨 조절 구현, 애니메이션 실행, 매개변수 변경
■ 드래그 가능한 패널, 애니메이션, 콘텐츠 정렬, 로컬라이제이션을 사용해서 더 나은 UI 생성
■ 새로운 스프라이트와 폰트를 만들어서 사용자 인터페이스 커스터마이즈하기
■ 코드를 통한 게임 요소 제어와 요소들 사이의 충돌 처리
■ 효율적이고 사용자 친화적인 크로스 플랫폼 메인 메뉴 생성
■ 다양한 스크린 사이즈와 종횡비 처리

이 책의 대상 독자

유니티 NGUI를 사용해서 효과적이고 사용자 친화적인 GUI를 만드는 방법을 배우고 싶은 유니티 3D 개발자에게 꼭 필요한 책이다. C# 스크립팅에 대해서는 알고 있어야 하지만, NGUI에 대한 지식은 필요하지 않다.

이 책의 구성

1장, ‘NGUI 시작’에서는 NGUI 기능과 작업 흐름을 설명한다. 플러그인을 가져오고, 첫 번째 UI 시스템을 만들고 구조를 알아본다.

2장, ‘NGUI 위젯 생성’에서는 첫 번째 위젯을 소개하고 설정하는 방법을 설명한다. 그리고 메인 메뉴를 만드는 방법까지 살펴본다.

3장, ‘UI 개선’에서는 드래그 가능한 윈도우와 스크롤되는 텍스트를 만들고 앵커를 지혜롭게 사용하는 방법을 설명한다. 또한 애니메이션과 NGUI 로컬라이제이션에 대해서도 살펴본다.

4장, ‘NGUI와 C#’에서는 툴팁, 트윈 등을 코딩으로 만드는 데 사용되는 C# 이벤트 메소드를 소개한다. 서로 다른 다양한 씬에서 유지되는 UI도 만들어 본다.

5장, ‘아틀라스와 폰트 커스터마이제이션’에서는 스프라이트와 폰트를 사용해서 UI를 커스터마이즈하는 방법을 설명하고, 메인 메뉴의 전체적인 모습을 변경해 본다.

6장, ‘인게임 UI’에서는 상호작용하는 버튼, 라이프 게이지, 캐릭터 위에 표시되는 플레이어 이름과 같은 인게임 2D 인터페이스 요소들을 소개한다.

7장, ‘3D UI’에서는 지면에 그려져 조명 효과를 받는 정지 메뉴 등의 3D 위젯을 게임 환경에 추가하는 방법을 다룬다.

8장, ‘모바일 플랫폼’에서는 게임이 안드로이드 기기에서 정상적으로 동작하도록 프로젝트를 준비하고 모바일 기기에서 발생하는 문제들을 해결하는 방법을 살펴본다.

9장, ‘스크린 사이즈와 종횡비’에서는 다양한 스크린 사이즈를 갖는 모든 모바일 기기에서 멋진 UI를 만드는 방법을 설명한다.

10장, ‘사용자 경험과 모범 실무’에서는 사용자 인터페이스 디자인 가이드라인, 사용자 경험, 시스템 효율성을 향상시키는 데 도움이 되는 테스트 방법에 대해 다룬다.

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

저자/역자 소개

지은이의 말

이 책은 NGUI(Next-Gen UI) 킷을 사용하는 초보자를 위한 안내서다. 쉬운 사용법과 효율적인 위지윅(WYSWYG, What You See Is What You Get) 작업 흐름으로 개발자들 사이에서 인기를 끈 유니티 3D 플러그인에 대해 이미 들어봤을 것이다.
NGUI는 프로젝트에서 사용할 멋진 2D와 3D UI를 만들 수 있는 컴포넌트와 스크립트를 내장하고 있다. 따라서 대부분의 작업은 에디터 안에서 이루어진다.
이 책에서는 기능적인 UI를 만들기 위한 필수적인 지식을 얻을 수 있다. 10개의 실용적인 장들은 메인 메뉴와 PC 및 모바일 플랫폼 모두에서 호환되는 간단한 3D 게임을 만들 수 있도록 안내할 것이다.

지은이 소개

찰스 피어슨(Charles Pearson)

프랑스 파리에 위치한 비디오게임 학교인 ISART 디지털(ISART Digital)에서 게임 디자인과 레벨 디자인 학사 학위를 취득했다.
이 책은 NGUI 플러그인에 대해 쓴 첫 번째 책인 『유니티 NGUI 게임 개발』(에이콘, 2014)의 개정증보판이다.
사이어나이드 스튜디오(Cyanide Studio), 플레이소프트(Playsoft), 에어버스(Airbus)에서 4년간 게임 디자이너, 레벨 디자이너, 유니티 개발자로 활동하면서, <블러드>, <던전볼(Dungeonbowl)>, <컨프론테이션(Confrontation)> 같은 게임의 PC 버전을 개발했다. 또한 <스페이스>, <오기(Oggy)>, <사이코>와 같은 모바일 게임을 개발했으며, 현재는 프리랜서 유니티 3D 개발자와 게임 디자이너로서 플레이스테이션 4와 엑스박스 원(Xbox one) 프로젝트에서 일하고 있다.

옮긴이의 말

최근 대부분의 모바일 게임은 유니티 3D 엔진으로 개발되고 있다. 그리고 모든 게임에는 유저 인터페이스(UI)가 들어가고, 그 인터페이스를 만드는 데 가장 많이 쓰이는 라이브러리가 NGUI다. 따라서 NGUI를 공부하는 것은 모바일 게임을 만들기 위해서는 필수라고 볼 수 있다.
유니티 3D에 기본으로 탑재된 GUI 시스템은 매우 후진적이고 납득할 수 없을 정도로 효율이 낮았다. 물론 유니티 테크놀로지스 사도 이 문제를 인지했기 때문에 최근에 유니티 GUI를 새로 정비하면서 많은 개선을 보인 것이 사실이다. 하지만 기본으로 제공되는 GUI 시스템은 개선을 위해서 엔진 업데이트를 기다려야 하고, 실제 게임 라이브 서비스 중에는 고작 GUI 기능 개선 때문에 엔진을 쉽게 업데이트할 수 없는 상황이 많다. 유니티 기본 GUI 시스템이 지속적인 업데이트를 하는데도 여전히 NGUI가 인기를 끄는 이유라고 볼 수 있다.
UI 분야는 사람들이 흔히 기피하는 분야로, 신입 프로그래머와 아티스트에게 업무가 주어지게 된다. 하지만 UI는 게임에서 엄청난 부분을 차지하는 영역으로서 그저 하기 귀찮다거나 쉬운 작업이라고 하찮게 여기면 좋은 게임을 만들 수 없다. 따라서 UI 프로그래머와 아티스트는 스스로의 일에 자긍심을 갖고 조금이라도 더 나은 UI를 만들기 위해 노력해야 한다. 무엇보다도 라이브러리에 대한 지식을 습득하고 많은 게임을 해보는 것이 중요하다.
이 책은 NGUI를 처음 배우는 사람부터 실제 프로젝트에 NGUI를 사용하는 실무자까지 다양한 문제를 해결할 수 있도록 도움을 준다. 이 책은 따라하기 형태로 구성되어 있기 때문에 초심자가 아니라면 한번 훑어보고 문제가 생겼을 때 목차에서 해당 컴포넌트를 설명하는 페이지를 찾아서 읽는 식으로 이용하면 될 것이다.
이 책이 NGUI를 배우거나 더 잘 이용하고 싶어 하는 독자들에게 도움이 되기를 바란다.

옮긴이 소개

김세중

연세대학교 컴퓨터과학과를 졸업했다. 컴퍼니원헌드레드에서 유니티 3D를 이용해 3D 모바일 MORPG <메탈브레이커>를 개발하고 Kong Studios, Inc.에서 2D 퍼즐 게임 <던전>를 개발했다. 개인이 개발한 퍼즐 게임 을 운영 중이며, 현재 산호세에 있는 Kong Studios, Inc.에서 모바일 RPG를 개발 중이다.

목차

목차
  • 1 NGUI 시작
    • 개요
      • 라이선스
      • UnityGUI 대 NGUI
      • 아틀라스
      • 이벤트
      • 지역화
      • 셰이더
    • 마지막 빌드
    • NGUI 추가
      • 에셋 스토어에서 추가
      • 디스크에서 추가
      • 패키지 추가
    • UI 루트 생성
    • 텍스트 표시
      • 레이블 위젯 생성
      • 글꼴 선택
      • UILabel 매개변수
      • 레이블 설정
    • 위젯 매개변수
    • 스프라이트 표시
      • 스프라이트 위젯 생성
      • UISprite 매개변수
      • 스프라이트 설정
        • 아틀라스 고르기
        • 스프라이트 고르기
      • 스프라이트 타입
        • 슬라이스
        • 심플
        • 타일
    • 자세히 살펴보기
      • UIRoot
        • 스케일링 스타일
        • 설정
      • UIPanel
      • 카메라 시스템
        • 직교투영 카메라
      • UICamera
    • 요약

  • 2 NGUI 위젯 생성
    • 컨트롤 프리팹
      • Background
    • 프리팹 툴바
    • 버튼
      • 버튼 생성
      • UIButton 매개변수
      • Play 버튼
      • Options 버튼
      • Exit 버튼
    • Options 윈도우
    • 팝업 리스트
      • 팝업 리스트 생성
      • UIPopup list의 매개변수
    • 언어 선택 박스 생성
      • 배경 스프라이트 생성
      • 제목
      • 팝업 리스트
    • 입력 필드
      • 입력 필드 생성
      • UIInput의 매개변수
      • 닉네임 박스
        • 입력 필드
    • 체크박스 추가
      • 체크박스 생성
      • UIToggle의 매개변수
      • 사운드 토글 박스
        • 체크 박스
    • 슬라이더
      • 슬라이더 생성
      • UISlider의 매개변수
      • 볼륨 조절
        • 음향 효과(SFX) 슬라이더
        • 음악 슬라이더
    • 요약

  • 3 UI 개선
    • NGUI 컴포넌트
    • hover 상태일 때 버튼이 커지게 하기
      • UIButton Scale
        • 사용
        • 매개변수
    • 메뉴 나타나게 하기
      • 트윈의 의미
      • Tween Scale 컴포넌트
        • 사용
        • 매개변수
        • 설정
    • 메뉴 사라지게 하기
      • UIPlay Tween
        • 사용
        • 매개변수
        • 설정
      • 게임 종료
        • MenuManager 스크립트
        • 트윈에 Exit() 메소드 링크
    • 옵션 페이지로 전환
      • Tween Position 컴포넌트
      • 메뉴 숨기기
        • Tween Position 컴포넌트 설정
        • Tween Position 실행
      • 옵션 페이지 나타나게 하기
        • Tween Position 컴포넌트 설정
        • Tween Position 컴포넌트 실행
    • 메인 메뉴로 돌아오기
      • Confirm 버튼
      • 옵션 페이지 사라지게 하기
      • 메인 메뉴 나타나게 하기
    • 씬 초기화
      • Options 페이지 가운데로 오게 하기
      • initialization 스크립트
      • MenuManager 스크립트
    • 볼륨 박스 사라지고 나타나게 하기
      • Tween Alpha 컴포넌트
      • 볼륨 박스 페이드
        • Tween Alpha 컴포넌트 설정
        • Tween Alpha 실행
    • 그 외의 트윈 컴포넌트들
    • 드래그 가능한 윈도우
      • UIDragObject
        • 사용
        • 매개변수
        • 설정
      • 갑자기 이동하는 윈도우
        • 메인 메뉴
    • 스크롤되는 텍스트
      • 텍스트 박스
      • 환영 인사 레이블
      • 클리핑
    • 닫기 버튼
      • UIForward events
        • 메인 메뉴 닫기
        • 옵션 페이지 닫기
      • UIEvent Trigger
        • 닉네임 강제 저장
    • 로컬라이제이션 시스템
      • 로컬라이제이션 파일
      • UILocalize
      • 언어 선택
      • 남은 로컬라이제이션 키들
      • 마지막 수정
    • 앵커
      • 목적
      • 매개변수
      • 설정
    • 요약

  • 4 NGUI와 C
    • 이벤트
      • 사용 가능한 메소드
      • 예제
    • 툴팁 생성
      • 툴팁 오브젝트
        • 위젯
        • UITooltip
      • 툴팁 표시
      • 남은 툴팁 추가
    • 트윈
      • Tween Scale
        • DisappearOnClick 스크립트
        • 트윈 이펙트
    • 이벤트 딜리게이트
      • 콜백 메소드
      • 콜백 메소드와 이벤트 링크
        • 코드
        • 인스펙터
    • 키보드 키
      • UIKey Binding
        • 매개변수
        • 설정
      • UIKey Navigation
        • 매개변수
        • 설정
        • 마우스와 키보드 동작
    • 옵션 저장
      • UISaved Option
        • 설정
      • 사운드 체크박스
    • 지속되는 UI
      • 싱글톤
        • Singleton 클래스
        • MenuManager 구현
      • 환영 인사 텍스트 제거
    • 요약

  • 5 아틀라스와 폰트 커스터마이제이션
    • 텍스처 아틀라스
      • 아틀라스 프리팹
    • 새 아틀라스 생성
      • Atlas Maker
      • 새 아틀라스
        • 필요한 에셋
        • Game 아틀라스
      • 플레이 아이콘
    • 아틀라스에 스프라이트 추가
      • 심플 스프라이트
        • 아틀라스 갱신
        • 옵션 아이콘
        • 종료 아이콘
      • 슬라이스 스프라이트
        • 아틀라스 갱신
        • 버튼 배경
      • 타일 스프라이트
        • 아틀라스 갱신
        • 나무 텍스처
    • 폰트
      • 다이나믹 폰트
      • 비트맵 폰트
        • 폰트 메이커
        • UIFont 컴포넌트
        • 툴팁 라벨
    • 큰 텍스처 표시
      • UITexture 컴포넌트
        • 매개변수
        • 설정
    • 요약

  • 6 인게임 UI
    • 게임
      • 게임 방식
      • 필요한 에셋
      • 유니티 패키지 추가
    • 드래그할 수 있는 파워 소스
      • UICamera
      • UIDragObject
      • BoxCollider
    • 플레이어 움직이기
      • 땅 클릭해서 움직이기
      • 오브젝트로 이동
    • 플레이어 이름 표시
      • 인게임 2D UI 루트
      • 닉네임 프리팹
      • PlayerName 컴포넌트
      • FollowObject 컴포넌트
    • 파워 소스 원소 전환
      • 원소 전환 UI
        • 불 버튼
        • 나머지 원소 버튼
        • FollowObject 컴포넌트
      • GameManager 컴포넌트
      • PowerSource 컴포넌트
      • 원소 전환 UI 숨기기
    • 원소 전환 충전 과정
      • Progress 프리팹
      • Progress 슬라이더 구현
      • 원소 버튼과 연결
    • 사용 불가능한 버튼
      • EnableAllButtons () 메소드
      • SetButtonState () 메소드
      • 버튼 상태 변경
    • 메인 메뉴에서 시작
    • 요약

  • 7 3D UI
    • 3D 유저 인터페이스 소개
      • 3D UI Root
      • 스케일 조정
      • 스코어 카운터
        • 텍스트 레이블
        • 배경
        • 테두리 스프라이트
        • 위치와 회전
        • ScoreController 컴포넌트
      • 정지 버튼
      • 정지 메뉴
        • 패널과 박스
        • 타이틀 바
        • 버튼
        • 정지 메뉴 표시
        • 버튼 링크
        • 키 바인딩
        • 인터랙션 오버라이드
    • 3D 환경 텍스트
    • 조명 효과
    • 요약

  • 8 모바일 플랫폼
    • 안드로이드로 전환
    • 준비
    • 게임 테스트
      • Bundle Identifier
      • 패키지 빌드
        • Manual build
        • Build and run
      • 테스트
    • 문제 수정
      • 자동 회전
      • 뒤로가기 버튼
      • 캐릭터 이동
      • 원소 전환 UI
        • 대기 상태 피드백 아이콘
        • 코드 구현
    • 커스터마이즈 가능한 UI
      • 드래그 가능한 UI 요소
      • 드래그 활성화
        • CustomizableUIElement 컴포넌트
        • GameManager 컴포넌트
      • 문제 발생 원인
    • 유니티 리모트
      • 필요 조건
      • 설정
      • 게임 테스트
    • 프로파일러
      • 기능
      • 기기에서 프로파일러 실행
    • 기기에서 디버깅
    • 요약

  • 9 스크린 사이즈와 종횡비
    • 어댑티브 UI
    • 플렉서블 UI
    • 다중 비트맵 폰트
      • SmallLato 폰트
      • MediumLato 폰트
      • LargeLato 폰트
      • 폰트 표시
    • 다중 아틀라스
      • 아틀라스 생성
        • SDAtlas
        • HDAtlas
        • SHDAtlas
        • ScreenAtlas
      • 테스트 버튼
        • 레퍼런스 아틀라스 변경
      • 스프라이트 이름 변경
    • 아틀라스 전환
      • AtlasSwitchController 컴포넌트
      • 설정
      • 픽셀 스내핑
    • 폰트 전환
      • ScreenFont
      • ScreenFont 할당
    • 요약

  • 10 사용자 경험과 모범 실무
    • 시작
    • 정의
      • 사용자 경험
      • 페르소나
      • 편리성
      • 몰입
      • 사용자 인터페이스 디자인
    • 게임에서의 사용자 인터페이스
    • 휴리스틱
      • 안내
        • 안내
        • 암시
        • 분류
        • 피드백
      • 작업량
        • 간결성
        • 정보 밀도
      • 분명한 컨트롤
        • 분명한 동작
        • 사용자 컨트롤
      • 적응성
        • 유연성
        • 커스터마이제이션
      • 에러 처리
        • 보호
        • 알림
        • 수정
      • 일관성
    • 게임 테스트
      • 테스트에 대한 조언
      • 언제와 무엇
        • 컨셉 프로토타입
        • 나머지 부분을 일찍 테스트하라
        • 버티컬 슬라이스
        • 가독성
        • 안내
        • 테스트 횟수
      • 편리성 테스트 방법
        • 준비
        • 플레이어 초대
        • 환경
        • 노트
        • 우선순위 매기기
    • 요약

도서 오류 신고

도서 오류 신고

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

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

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

정오표

정오표

2016. 1. 6 수정사항

[p.126: 그림 오류]
<수정>

2016. 1. 13 수정사항

[p. 175: 아래에서 10행]
DisappearOnClic의 Target 필드로 드래그한다.
->
DisappearOnClick의 Target 필드로 드래그한다.