Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Искусство создания сценариев в Unity. Практические советы и приемы создания игр профессионального уровня на C# в Unity

Покупка
Артикул: 816362.01.99
Доступ онлайн
639 ₽
В корзину
Это простое и доступное руководство, в котором вы найдете полезные советы и современные приемы программирования игр на C# в Unity. Десять исчерпывающих глав книги содержат практические и наглядные примеры творческого подхода к программированию на C# и созданию коммерчески успешных игр профессионального уровня. Вы научитесь наделять игровых персонажей впечатляющим искусственным интеллектом, настраивать камеры для создания эффектов постобработки и управлять сценой, опираясь на понимание компонентной архитектуры. Кроме того, вы познакомитесь с классами .NET, позволяющими повысить надежность программ, увидите, как обрабатывать наборы данных, такие как файлы CSV, и как создавать сложные запросы к данным. Прочтя эту книгу до конца, вы станете сильным разработчиком Unity, вооруженным множеством инструментов и приемов быстрой и эффективной разработки коммерческих игр. Издание предназначено для студентов, преподавателей и специалистов, знакомым с Unity, а также с основами программирования. Неважно, как давно вы знакомы с Unity, в этой книге вы найдете важную и полезную информацию, которая поможет вам эффективно наладить процесс создания игр.
Торн, А. Искусство создания сценариев в Unity. Практические советы и приемы создания игр профессионального уровня на C# в Unity : практическое руководство / А. Торн ; пер. с англ. Р. Н. Рагимова. - 2-е изд - Москва : ДМК Пресс, 2023. - 362 с. - ISBN 978-5-89818-343-1. - Текст : электронный. - URL: https://znanium.com/catalog/product/2102630 (дата обращения: 05.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Алан Торн

Искусство создания сценариев 
в Unity
Mastering Unity 
Scripting

Alan Thorn

Learn advanced C# tips and techniques to make 
professional-grade games with Unity

BIRMINGHAM – MUMBAI
Практические советы и приемы создания игр 
профессионального уровня на C# в Unity

Искусство создания 
сценариев в Unity

Москва, 2023

Алан Торн

2-е издание, электронное
УДК 004.4’2Unity3D
ББК 32.972
Т60

Т60
Торн, Алан.
Искусство создания сценариев в Unity. Практические советы и приемы создания 
игр профессионального уровня на C# в Unity / А. Торн ; пер. с англ. Р. Н. Рагимо-
ва. — 2-е изд., эл. — 1 файл pdf : 362 с. — Москва : ДМК Пресс, 2023. — Систем. требования: 
Adobe Reader XI либо Adobe Digital Editions 4.5 ; экран 10". — Текст : электронный.


ISBN 978-5-89818-343-1

Это простое и доступное руководство, в котором вы найдете полезные советы и современные 
приемы программирования игр на C# в Unity. Десять исчерпывающих глав книги содержат 
практические и наглядные примеры творческого подхода к программированию на C# и созданию 
коммерчески успешных игр профессионального уровня.
Вы научитесь наделять игровых персонажей впечатляющим искусственным интеллектом, 
настраивать камеры для создания эффектов постобработки и управлять сценой, опираясь на 
понимание компонентной архитектуры. Кроме того, вы познакомитесь с классами .NET, позволяющими 
повысить надежность программ, увидите, как обрабатывать наборы данных, такие 
как файлы CSV, и как создавать сложные запросы к данным. Прочтя эту книгу до конца, вы 
станете сильным разработчиком Unity, вооруженным множеством инструментов и приемов 
быстрой и эффективной разработки коммерческих игр.
Издание предназначено для студентов, преподавателей и специалистов, знакомым с Unity, 
а также с основами программирования. Неважно, как давно вы знакомы с Unity, в этой книге 
вы найдете важную и полезную информацию, которая поможет вам эффективно наладить процесс 
создания игр.

УДК 004.4’2Unity3D 
ББК 32.972

Электронное издание на основе печатного издания: Искусство создания сценариев в Unity. Практические 
советы и приемы создания игр профессионального уровня на C# в Unity / А. Торн ; пер. с англ. Р. Н. Раги-
мова. — Москва : ДМК Пресс, 2016. — 362 с. — ISBN 978-5-97060-381-9. — Текст : непосредственный.

Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы 
то ни было средствами без письменного разрешения владельцев авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно 
существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с 
этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги.

В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами защиты авторских 
прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации.

ISBN 978-5-89818-343-1
© 2015 Packt Publishing
© Оформление, перевод, ДМК Пресс, 2016
Содержание

Об авторе ................................................................10
О технических рецензентах ....................................... 11
Предисловие ...........................................................13

Глава 1. Основы C# в Unity ..........................................19

Почему C#?  ..........................................................................................................20
Создание файлов сценариев  ...........................................................................21
Подключение сценариев ...................................................................................24
Переменные ..........................................................................................................26
Условные операторы  .........................................................................................28
Оператор if  ....................................................................................................28
Оператор switch ...........................................................................................31
Массивы  ................................................................................................................34
Циклы .....................................................................................................................37
Цикл foreach  .................................................................................................38
Цикл for  ..........................................................................................................39
Цикл while  .....................................................................................................40
Бесконечные циклы  ...................................................................................42
Функции.................................................................................................................42
События  .................................................................................................................45
Классы и объектно­ориентированное программирование  ..................46
Классы и наследование  ....................................................................................49
Классы и полиморфизм  ...................................................................................51
Свойства в C#  .....................................................................................................55
Комментарии  .......................................................................................................57
Видимость переменных  ...................................................................................60
Оператор ?  ............................................................................................................62
Методы SendMessage и BroadcastMessage  ................................................62
Итоги  ......................................................................................................................65

Глава 2. Отладка .......................................................66

Ошибки компиляции и консоль  ...................................................................67
Отладка с помощью Debug.log – определяемые программистом 
сообщения  .............................................................................................................70
Переопределение метода ToString  ...............................................................73
 Содержание

Визуальная отладка  ...........................................................................................76
Регистрация ошибок ..........................................................................................80
Отладка с помощью редактора  ......................................................................85
Профилирование  ................................................................................................87
Отладка с помощью MonoDevelop – начало .............................................92
Отладка с помощью MonoDevelop – окно Watch  ...................................97
Отладка с помощью MonoDevelop – продолжение и пошаговый 
режим  .................................................................................................................. 101
Отладка с помощью MonoDevelop – стек вызовов  ............................. 103
Отладка с помощью MonoDevelop – окно Immediate ......................... 105
Отладка с помощью MonoDevelop – точки останова с условием  ... 107
Отладка с помощью MonoDevelop – точки трассировки  ................. 108
Итоги  ................................................................................................................... 111

Глава 3. Синглтоны, статические члены,  
игровые объекты и миры ..........................................112

Игровые объекты ............................................................................................. 112
Взаимодействия компонентов ..................................................................... 114
Функция GetComponent  ....................................................................... 116
Получение нескольких компонентов ................................................ 117
Компоненты и сообщения  .................................................................... 118
Игровые объекты и игровой мир  ............................................................... 120
Поиск игровых объектов ........................................................................ 120
Сравнение объектов ................................................................................. 122
Получение ближайшего объекта  ........................................................ 123
Поиск любого объекта определенного типа  ................................... 124
Проверка препятствий между игровыми объектами ................... 124
Доступ к иерархии объектов  ................................................................ 126
Игровой мир, время и обновление  ............................................................ 128
Правило № 1 – важность событий обновления кадров  ............. 130
Правило № 2 – движение должно основываться на времени  .... 130
Неуничтожаемые объекты  ........................................................................... 132
Синглтоны и статические переменные  ................................................... 134
Итоги  ................................................................................................................... 138

Глава 4. Событийное программирование ....................139

События  .............................................................................................................. 140
Управление событиями .................................................................................. 144
Основы управления событиями с помощью интерфейсов  ....... 145
Создание класса EventManager  .......................................................... 148
Содержание  7

Директивы #region и #endregion для свертывания кода 
в MonoDevelop  ................................................................................................. 153
Использование EventManager  ............................................................ 154
Альтернативный способ, основанный на делегировании  .......... 155
События класса MonoBehaviour  ........................................................ 159
События мыши и сенсорной панели  ................................................. 160
Фокус приложения и пауза  .................................................................. 164
Итоги  ................................................................................................................... 167

Глава 5. Камеры и отображение сцены .......................168

Визуальное представление камеры ........................................................... 168
Быть на виду  ..................................................................................................... 171
Определение видимости объекта  ....................................................... 172
Подробнее о видимости .......................................................................... 174
Проверка поля зрения – отображаемые компоненты  ................ 174
Проверка поля зрения – точки  ........................................................... 176
Проверка поля зрения – заслонение  ................................................ 176
Видимость для камеры – впереди или позади ............................... 178
Ортографические камеры ............................................................................. 179
Вывод изображения с камеры и постобработка  ................................... 183
Дрожание камеры  ........................................................................................... 189
Камеры и анимация  ........................................................................................ 192
Сопровождающие камеры  .................................................................... 193
Управление движением камеры  ................................................................. 195
Траектория камеры – iTween  ............................................................... 197
Итоги  ................................................................................................................... 201

Глава 6. Работа с фреймворком Mono ........................202

Списки и коллекции ....................................................................................... 203
Класс List  .................................................................................................... 204
Класс Dictionary  ....................................................................................... 207
Класс Stack  ................................................................................................. 208
Интерфейсы IEnumerable и IEnumerator  ............................................... 210
Перебор врагов с помощью интерфейса IEnumerator  ................ 211
Строки и регулярные выражения .............................................................. 216
Null, пустые строки и пробелы  ............................................................ 216
Сравнение строк  ...................................................................................... 217
Форматирование строк .......................................................................... 219
Цикл по символам строке  ..................................................................... 219
Создание строк  ......................................................................................... 220
 Содержание

Поиск в строках  ........................................................................................ 220
Регулярные выражения  ......................................................................... 220
Произвольное количество аргументов  .................................................... 222
Язык интегрированных запросов  .............................................................. 223
Linq и регулярные выражения  ................................................................... 226
Работа с текстовыми ресурсами .................................................................. 227
Текстовые ресурсы – статическая загрузка  .................................... 227
Текстовые ресурсы – загрузка из локальных файлов  ................. 228
Текстовые ресурсы – загрузка из INI­файлов  ............................... 230
Текстовые ресурсы – загрузка из CSV­файлов ............................. 231
Текстовые ресурсы – загрузка из Интернета  ................................. 232
Итоги  ................................................................................................................... 232

Глава 7. Искусственный интеллект ............................233

Искусственный интеллект в играх  ........................................................... 234
Начало проекта  ................................................................................................ 235
Внедрение навигационного меша  .............................................................. 237
Создание агента искусственного интеллекта ......................................... 242
Конечные автоматы в Mecanim  .................................................................. 244
Конечный автомат состояний в C# – начало  ........................................ 251
Создание состояния Idle  ............................................................................... 252
Создание состояния Patrol ........................................................................... 256
Создание состояния Chase  ........................................................................... 260
Создание состояния Attack  ......................................................................... 262
Создание состояния бегства SeekHealth  ................................................. 263
Итоги  ................................................................................................................... 266

Глава 8. Настройка редактора Unity ...........................268

Пакетное переименование ............................................................................ 268
Атрибуты C# и рефлексия  ........................................................................... 274
Смешивание цветов  ........................................................................................ 278
Отображение свойств  .................................................................................... 283
Локализация  ..................................................................................................... 289
Итоги  ................................................................................................................... 296

Глава 9. Работа с текстурами, моделями  
и двухмерными изображениями................................298

Скайбокс  ............................................................................................................ 299
Процедурные меши ......................................................................................... 305
Содержание  9

Анимация UV­координат – прокручивание текстур  ......................... 311
Рисование на текстуре  ................................................................................... 313
Шаг 1 – создание шейдера смешивания текстур ........................... 315
Шаг 2 – создание сценария рисования текстуры .......................... 319
Шаг 3 – настройка текстуры рисования  .......................................... 326
Итоги  ................................................................................................................... 328

Глава 10. Управление исходными текстами  
и другие подсказки .................................................331

Git – управление исходными текстами .................................................... 331
Шаг № 1 – загрузка  ................................................................................. 333
Шаг № 2 – добавление проекта в репозиторий ............................. 334
Шаг № 3 – настройка Unity для управления исходными  
текстами  ...................................................................................................... 336
Шаг № 4 – создание репозитория ...................................................... 337
Шаг № 5 – игнорируемые файлы ....................................................... 338
Шаг № 6 – первая фиксация изменений  ......................................... 339
Шаг № 7 – изменение файлов  ............................................................. 341
Шаг № 8 – получение файлов из хранилища  ................................ 343
Шаг № 9 – просмотр репозитория  .................................................... 345
Папка ресурсов и внешние файлы  ............................................................ 347
Пакеты ресурсов и внешние файлы  ......................................................... 349
Хранимые данные и сохранение игры  ..................................................... 352
Итоги  ................................................................................................................... 356

Предметный указатель ............................................357
Об авторе

Алан Торн (Alan Thorn), разработчик игр, независимый программист 
и писатель, с более чем 13­летним опытом работы, живущий в Лондоне. В 2010 году основал компанию Wax Lyrical Games и является 
создателем игры «Baron Wittard: Nemesis of Ragnarok», удостоенной 
многочисленных наград. Автор 10 видеокурсов и 11 книг по разработке игр, в том числе «Unity 4 Fundamentals: Get Started at Making 
Games with Unity» (Focal Press), «UDK Game Development» и «Pro 
Unity Game Development with C#» (Apress). Кроме того, как приглашенный лектор читает курс «Game Design & Development Masters 
Program» в Национальной школе кино и телевидения.
Участвовал как независимый разработчик в более чем 500 проектах по созданию игр, симуляторов, игровых киосков, «серьезных» 
игр, программ дополненной реальности для игровых студий, музеев 
и тематических парков по всему миру. В настоящее время работает 
над приключенческой игрой «Mega Bad Code» для настольных компьютеров и мобильных устройств. Алан обожает графику. Увлекается философией, йогой и пешими загородными прогулками. Его адрес 
электронной почты: directx_user_interfaces@hotmail.com.
О технических  
рецензентах

Дилан Агис (Dylan Agis), программист и дизайнер игр, в настоящее 
время участвует в нескольких сторонних проектах, как независимый разработчик, и одновременно развивает несколько собственных. 
Имеет большой опыт работы на C++ и C#, а также в Unity, и любит 
решать проблемы.

Я хотел бы поблагодарить издательство Packt Publishing за предоставленную возможность ознакомиться с книгой и автора за интересное чтение.

Джон П. Доран (John P. Doran), дизайнер игр, созданием которых занимается более 10 лет. Участвовал в разработке разнообразных 
игр, и в одиночку, и в командах, численностью до 70 человек, в рамках 
в учебных, и профессиональных проектов.
Одно время работал в компании LucasArts над созданием игры 
«Star Wars: 1313» как дизайнер­стажер, где был единственным начинающим дизайнером в команде опытных специалистов. Также 
был ведущим преподавателем на курсах DigiPen®­Ubisoft® Campus 
Game Programming Program, где обучал студентов­выпускников программированию игр по интенсивной программе.
В настоящее время Джон занимает пост технического дизайнера 
в отделе исследований и разработки, в институте DigiPen. Кроме 
того, он преподает и консультирует студентов по нескольким предметам, читает лекции по разработке игр, в том числе на C++, в Unreal, 
Flash, Unity и др.
Был техническим рецензентом девяти книг по разработке игр и является автором книг «Unity Game Development Blueprints», «Getting 
Started with UDK», «UDK Game Development [Video]» и «Mastering 
UDK Game Development HOTSHOT». Все они вышли в издательстве 
Packt Publishing. Также является соавтором книги «UDK iOS Game 
Development Beginner’s Guide» (Packt Publishing).
Алессандро Моки (Alessandro Mochi) играет в видеоигры со времен появления «Amstrad» и «NES» на всех возможных устройствах: 
компьютере, консоли и мобильном телефоне. Большие и маленькие 
видеоигры – его любовь и страсть. Ролевые игры (RPG), стратегии, 
динамические игры­платфомеры... ничто не ускользнуло от него.
 О технических рецензентах 

Профессионально занимаясь программированием, имея диплом 
с отличием в области управления проектами, свободно владея испанским, итальянским и английским языками, он получил глубокое знание многих программ. Всегда готов встретить новые вызовы.
В настоящее время внештатный дизайнер и программист, помогает 
молодым разработчикам воплотить идеи в реальность. Хотя он часто 
путешествует по всему миру, его по­прежнему легко найти через его 
портфолио на www.amochi-portfolio.com.
Райан Уоткинс (Ryan Watkins) любит веселиться. Его можно найти на LinkedIn: www.linkedin.com/in/ryanswatkins.
Предисловие

Книга «Искусство создания сценариев в Unity» – это сжатое и специализированное 
исследование некоторых продвинутых, нетрадиционных 
и эффективных методов разработки игровых сценариев на 
C# в Unity. Это делает книгу очень актуальной, потому что, несмотря 
на большое число книг «для начинающих» и учебных пособий по 
Unity, очень немногие из них описывают приемы профессиональной 
разработки в ясной и структурированной форме. Автор книги предполагает, 
что вы уже знакомы с основами Unity, такими как импорт 
ресурсов, проектирование уровней, карты освещения и основы разработки 
сценариев на C# или JavaScript. Книга сразу начинается с рассмотрения 
примеров творческого использования сценариев для решения 
сложных задач, таких как отладка, искусственный интеллект, 
нестандартное отображение, расширение редактора, анимация и движение, 
и многое другое. Главная цель заключается не в демонстрации 
абстрактных принципов и теоретических основ, а в том, чтобы 
на реальных примерах показать, как применить теорию на практике, 
что поможет вам в полную силу задействовать свои знания в области 
программирования для создания качественных игр, которые не просто 
работают, но работают оптимально. Чтобы получить максимальную 
отдачу от этой книги, читайте ее главы по порядку, от начала до 
конца, и используйте навыки обобщенного и абстрактного мышления. 
То есть, рассматривайте каждую главу, как конкретный пример 
и демонстрацию более общих принципов, сохраняющихся во времени 
и пространстве; их можно выделить из конкретного контекста в данной 
книге и повторно использовать в иных ситуациях, где бы они не 
потребовались. Проще говоря, рассматривайте приведенные здесь 
сведения вне связи с конкретными примерами и выбранной мной 
тематикой, а как весьма актуальные знания для ваших собственных 
проектов. Итак, давайте начнем.
 Предисловие

О чем рассказывается в этой книге 

Глава 1 «Основы C# в Unity» кратко напоминает основы написания 
сценариев для Unity. Она не является полным и исчерпывающим 
руководством по основам. Скорее, это курс повторения для тех, кто 
ранее уже изучал основы, но, возможно, не писал сценарии некоторое 
время и был бы рад освежить память перед тем, как начать работу 
в следующих главах. Если вы знакомы с основами сценариев (такими 
как классы, наследование, свойства и полиморфизм), можете пропустить эту главу.
Глава 2 «Отладка» глубоко исследует процесс отладки. Надежность и эффективность кода нередко зависит от возможности успешно находить и исправлять ошибки при их появлении. Это делает отладку очень важным умением. В этой главе мы не только рассмотрим 
основы, но и опишем отладку в интерфейсе MonoDevelop, а также 
установим полезную систему регистрации ошибок.
Глава 3 «Синглтоны, статические члены, игровые объекты и миры» 
исследует широкий спектр возможностей для доступа, изменения 
и управления игровыми объектами. В частности, мы познакомимся 
с шаблоном проектирования «Одиночка» (синглтон) для создания 
глобальных объектов, а также со многими приемами поиска, перечисления, сортировки и размещения объектов. Сценарии в Unity манипулируют объектами в едином игровом мире (пространстве координат), обеспечивая реалистичность игр.
Глава 4 «Событийное программирование» рассматривает событийное программирование как важный подход к перестройке  архитектуры игры с целью оптимизации. Переложив тяжелую нагрузку с часто 
возникающих событий и событий обновления на комплекс других 
событий, можно высвободить много ценного времени для решения 
других задач.
Глава 5 «Камеры и отображение сцены» глубоко исследует работу 
камер, подробно описывает их архитектуру и настройку отображения 
сцены. Мы изучим проверку попадания в область видимости, исследуем вопросы отбраковки, познакомимся с такими понятиями, как 
прямая видимость, ортогональная проекция, глубина, слои, эффекты 
постобработки и прочее.
Глава 6 «Работа с фреймворком Mono» исследует обширную библиотеку Mono и некоторые из ее наиболее практичных классов, от 
словарей, списков и стеков до таких функций и понятий, таких как 
строки, регулярные выражения и фреймворк запросов Linq. К концу 
Что потребуется для работы с книгой  15

этой главы вы овладеете приемами быстрой и эффективной обработки больших объемов данных.
Глава 7 «Искусственный интеллект» содержит пример практического применения  почти всего описанного ранее в одном проекте 
для создания искусственного интеллекта, а точнее – умного врага, 
способного ходить, преследовать, патрулировать, нападать, убегать 
и искать аптечки для восстановления здоровья. В процессе создания 
этого персонажа мы рассмотрим вопросы прямой видимости, обнаружения и прокладки маршрутов.
Глава 8 «Настройка редактора Unity» описывает редактор Unity, 
функциональность которого способна удовлетворить самые разные 
потребности, но иногда бывает нужно нечто  большее. В этой главе 
рассказывается, как создавать классы для настройки самого редактора, чтобы сделать работу в нем удобнее и эффективнее. Мы создадим 
собственный инспектор свойств и полнофункциональную систему 
локализации для разработки многоязычных игр.
Глава 9 «Работа с текстурами, моделями и двухмерной графикой» 
содержит описание функций для работы с двухмерными графическими элементами, такими как спрайты, текстуры и элементы пользовательского интерфейса. Двухмерные элементы играют важную роль 
даже в трехмерных играх, и здесь мы рассмотрим ряд задач работы 
с двухмерной графикой и эффективные способы их решения.
Глава 10 «Управление исходными текстами и другие подсказки» завершает книгу. Она содержит множество советов и рекомендаций, 
которые не вписываются в какую­либо конкретную категорию, но 
в целом очень важны. Мы рассмотрим полезные навыки программирования, советы по поддержанию чистоты кода, сериализацию 
данных, применение систем управления версиями исходных кодов 
и многое другое.

Что потребуется для работы с книгой

Эта книга, как следует из ее названия, описывает работу с платформой Unity, а это значит, что понадобится только копия Unity. Unity 
поставляется со всем необходимым для работы с книгой, в том числе 
со встроенным редактором кода. Дистрибутив Unity можно загрузить с сайта http://unity3d.com/. Приложение Unity поддерживает две 
основные лицензии, бесплатную и профессиональную. Бесплатная 
лицензия ограничивает доступ к некоторым функциям, но сохраняет 
доступность обширного набора основных функций. В целом боль
Доступ онлайн
639 ₽
В корзину