Как научиться программировать на unity


Программирование в Unity для опытных программистов C# и C++

Традиционная модель «игровой объект — компонент» хорошо работает и сегодня, поскольку она проста как для программистов, так и других пользователей, а также удобна для создания интуитивных интерфейсов. Добавите компонент Rigidbody к объекту GameObject — он начнет падать, добавите компонент Light — GameObject начнет излучать свет. Все остальное также подчиняется этой простой логике. 

При этом система компонентов создана на основе объектно-ориентированной платформы, что создает сложности для разработчиков при работе с кэшем и памятью развивающегося оборудования.  

Компоненты и игровые объекты относятся к «тяжелым объектам C++». Все объекты GameObject имеют имя. Их компоненты представляют собой оболочки для C# поверх компонентов на C++. Это упрощает работу с ними, но может влиять на производительность, если они будут храниться в памяти без явной структуры. Объект C# может находиться на любом участке памяти. Объект C++ также может находиться в любом участке памяти. Группировка и последовательное размещение объектов в памяти отсутствуют. При каждой загрузке в центральный процессор для обработки объект приходится собирать по частям из разных участков памяти. Это может сильно замедлить загрузку, а оптимизация потребует много усилий.

Для решения этих проблем мы начали перерабатывать базовые системы Unity на основе высокопроизводительного, многопоточного стека информационно-ориентированных технологий или DOTS (в настоящее время в статусе предварительной версии). 

DOTS позволяет вашей игре эффективно использовать все возможности новейших многоядерных процессоров. Стек состоит из следующих компонентов: 

  • система задач C# для эффективного исполнения кода на многопоточных системах;
  • Entity Component System (ECS) для разработки высокопроизводительного кода по умолчанию;
  • компилятор Burst для компиляции скриптов в оптимизированный нативный код.

ECS — это новая система компонентов в составе DOTS; все традиционные объектно-ориентированные манипуляции над GameObject отражаются на экземпляре в новой системе. Название «Компонент» никак не изменилось. Важнейшее отличие — в структуре данных. Подробнее об этом можно узнать из статьи «О DOTS: Entity Component System».

Сценарии в Unity для опытных программистов на C # и C ++

Традиционная концепция GameObject-Component продолжает хорошо работать, потому что ее легко понять как программистам, так и непрограммистам, а также легко создавать интуитивно понятные пользовательские интерфейсы. Вы добавляете компонент Rigidbody к GameObject, и он начнет падать, или компонент Light к GameObject, и он будет излучать свет. И так далее.

Однако система Component была написана в объектно-ориентированной структуре, и это создает проблемы для разработчиков, когда дело доходит до управления кешем и памятью в постоянно развивающемся оборудовании.

Компоненты и GameObject - это «тяжелые C ++» объекты. У всех GameObject есть имя. Их компоненты - это оболочки C # поверх компонентов C ++. Это упрощает работу с ними, однако это может сказаться на производительности, поскольку они потенциально могут храниться в неструктурированном виде. Этот объект C # может быть где угодно в памяти. Объект C ++ также может находиться в любом месте памяти. Вещи не сгруппированы в непрерывной памяти. Каждый раз, когда что-либо загружается в ЦП для обработки, все должно быть получено из нескольких мест.Это может стать медленным и неэффективным и, следовательно, потребовать множества обходных путей оптимизации.

Чтобы решить эти проблемы с производительностью, мы перестраиваем основную основу Unity с помощью высокопроизводительного многопоточного Data-Oriented Technology Stack или DOTS (в настоящее время находится в предварительной версии).

DOTS позволяет вашей игре в полной мере эффективно использовать новейшие многоядерные процессоры. Он состоит из:

В DOTS ECS - это новая система компонентов; то, что вы делаете с GameObject традиционным объектно-ориентированным способом, вы делаете с Entity в этой новой системе.Компоненты до сих пор называются именно так. Критическое отличие заключается в расположении данных. Вы можете узнать больше об этом в сообщении блога «О DOTS: Entity Component System».

,

Изучение C # и кодирования в Unity для начинающих | Разработка видеоигр

Переменные

В Unity скрипты начинаются с размещения необходимых вам инструментов вверху, и обычно это делается с объявления переменных. Здесь вы можете увидеть объявленные переменные с ключевым словом видимости «public» или «private» в начале, за которым следуют тип и имя.

Когда мы объявляем ваши переменные, существует несколько типов видимости, но два наиболее важных из них - публичный и частный.

Если вы создадите сценарий с указанным выше текстом в редакторе кода, а затем вернетесь в Unity и назначите сценарий GameObject, вы увидите, что вы можете получить доступ и увидеть переменную освещения, объявленную как общедоступную в инспекторе, но вы не могу видеть частный. И это потому, что к тому, что определено как «частное», можно получить доступ только в этом конкретном скрипте, в этом конкретном классе.

Если вы сделаете это общедоступным, то он будет доступен для других скриптов и других классов и может быть изменен в Инспекторе из редактора Unity.Это означает, что другие люди могут получить к нему доступ и изменить его ценность.

Есть много причин выбирать между частным или публичным. Частные переменные позволяют сделать ваш код более чистым, поскольку вы знаете, что значение этих переменных можно изменить только внутри этого класса. Это упрощает отладку и сопровождение кода.

Если вы выбрали «общедоступный» и у вас возникла проблема, вам нужно заглянуть внутрь всей своей кодовой базы, чтобы отслеживать источник, потому что любой другой объект имеет доступ к этой переменной.Однако, если вы хотите, чтобы объекты обменивались данными между собой, вам нужно, чтобы некоторые переменные (или функции) были общедоступными.

Другой важный аспект переменных - это тип. Тип определяет, какое значение хранится в памяти переменной, например это может быть число, текст или более сложные типы, как на изображении ниже: Transform, Light и Demo Script на изображении ниже на самом деле являются ссылками на компоненты. Unity необходимо знать, что это за объект, чтобы знать, как с ним обращаться.

Еще одна важная вещь о переменных - это имя. Главное, что вам нужно помнить об именах переменных, это то, что они не могут начинаться с числа и не могут содержать пробелов. Поэтому есть стиль написания имен. В C # соглашение об именах - camelCase: вы начинаете со строчной буквы и добавляете слова без пробелов, начиная с заглавной буквы, например "мой свет".

Когда Unity компилирует скрипт, он делает общедоступные переменные видимыми в редакторе.Смотрите изображение ниже от инспектора.

,

Как создать видеоигру, не прибегая к программированию

Если вы дизайнер или художник, который хочет реализовать свой творческий потенциал без программирования, PlayMaker - ваш выбор. Вы можете быстро создавать прототипы игрового процесса и модели поведения искусственного интеллекта, а также анимационные графики и интерактивные объекты. Этот инструмент визуального написания сценариев также использовался в таких играх, как Hearthstone, INSIDE и Dreamfall Chapters.

«Playmaker - это самый простой и интуитивно понятный способ для некодеров реализовать функциональность в наших играх!» Андреас Н Грёнтвед, INSIDE

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

Такой инструмент, как PlayMaker, интегрированный в Unity, дает возможность множеству создателей, интересующихся созданием игр, историей или отношениями между персонажами и объектами, без необходимости углубляться в детали синтаксиса кода.

Если вы хотите увидеть, как это работает, есть серия видеороликов, в которых рассказывается, как создать интерактивность с помощью визуальных сценариев в PlayMaker.

Проверьте это на канале Unity Youtube

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

,

Смотрите также