УДК 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
Стр.5
Содержание
Об авторе ................................................................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
Стр.6
6 Содержание
Визуальная отладка ...........................................................................................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
Содержание 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
Стр.8
8 Содержание
Поиск в строках ........................................................................................ 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
Содержание 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
Стр.10