Искусство создания сценариев в Unity. Практические советы и приемы создания игр профессионального уровня на C# в Unity
Покупка
Тематика:
Программирование на C и C++
Издательство:
ДМК Пресс
Автор:
Торн Алан
Перевод:
Рагимов Р. Н.
Год издания: 2023
Кол-во страниц: 362
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-89818-343-1
Артикул: 816362.01.99
Доступ онлайн
В корзину
Это простое и доступное руководство, в котором вы найдете полезные советы и современные приемы программирования игр на C# в Unity. Десять исчерпывающих глав книги содержат практические и наглядные примеры творческого подхода к программированию на C# и созданию коммерчески успешных игр профессионального уровня. Вы научитесь наделять игровых персонажей впечатляющим искусственным интеллектом, настраивать камеры для создания эффектов постобработки и управлять сценой, опираясь на понимание компонентной архитектуры. Кроме того, вы познакомитесь с классами .NET, позволяющими повысить надежность программ, увидите, как обрабатывать наборы данных, такие как файлы CSV, и как создавать сложные запросы к данным. Прочтя эту книгу до конца, вы станете сильным разработчиком Unity, вооруженным множеством инструментов и приемов
быстрой и эффективной разработки коммерческих игр. Издание предназначено для студентов, преподавателей и специалистов, знакомым с Unity, а также с основами программирования. Неважно, как давно вы знакомы с Unity, в этой книге вы найдете важную и полезную информацию, которая поможет вам эффективно наладить процесс создания игр.
- Полная коллекция по информатике и вычислительной технике
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для обучающихся
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для обучающихся (сводная)
- Программирование
- Программирование на C и C++
- Разработка игр
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Алан Торн Искусство создания сценариев в 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 поддерживает две основные лицензии, бесплатную и профессиональную. Бесплатная лицензия ограничивает доступ к некоторым функциям, но сохраняет доступность обширного набора основных функций. В целом боль
Доступ онлайн
В корзину