Как сделать строительство в unity

Моделирование дома в SketchUp и перенос его в Unity 3D

Учебные материалы для школы программирования. Часть 7

Предыдущие уроки можно найти здесь:

На прошлом уроке мы затронули тему самостоятельного создания объектов для игр. В т.ч. была упомянута программа SketchUp, которую мы часто использовали, для создания простых строений.

Сегодня, мы создадим здание и перенесем его в Unity. Хочу обратить ваше внимание на то, что для импорта готового здания, необходимо, чтобы SketchUp стоял на том же ПК. Без программы Unity не сможет импортировать модель.

Порядок выполнения

Выберем инструмент фигуры и нарисуем на земле квадрат по форме дома.

Теперь, выдавим его с помощью инструмента выдавить/вдавить (push/pull).

Сделаем стены. Для этого используем инструмент Сдвиг (Offset).

Повторим операцию ещё раз.

Образовалась довольно узкая рамка, которую можно использовать для создания стен. На этом этапе стоит добавить все запланированные перегородки.

Лишние линии убираются инструментом Ластик (Erase).

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

Нарисуем на стене квадрат и выделим его.

Нажимая Ctrl+C и Ctrl+V, копируем его по стене, привязывая к линии.

После копирования окон лишнии линии стираем.

С помощью инструмента Вдавить/выдавить вдавливаем окно до состояния «На грани» (On Face).

Теперь, инструмент запомнил глубину и можно вырезать окна двойным кликом.

Вырежем дверь похожим образом.

Используем инструмент «Ведёрко» (Paint Bucket) для наложения текстур. Выберем подходящую текстуру и зальём пол с фундаментом.

Аналогично поступим со стенами.

Чтобы наложить текстуру на замкнутый контур, нажмём Shift, чтобы наложить на все плоскости, имеющие такую же текстуру — Ctrl.

Текстура на стену легла не идеально. Перейдём в свиток Текстура-Позиция, и перетягивая красный ползунок мы изменим позицию текстуры, а зелёным — её размер.

Как сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unity

Сейчас текстура этой стены отличается от остальных стен. Используем клик левой кнопки мыши по этой стене с зажатым Alt на инструменте «Ведёрко», чтобы запомнить настройки текстуры на этой стене.

И красим инструментом «Ведёрко» остальные стены.

Перейдем к созданию крыши. Для этого нужно заблокировать данный участок от редактирования, чтобы ничего не испортить. Выделим дом и вызовем свиток меню «Сгруппировать».

На одном из торцов дома создадим плоскость для крыши.

Попрошу заметить, что мы вышли из группы кликом по пустому месту на экране. Если плоскость маленькая, её можно увеличить инструментом «Растянуть» (Scale).

Рисуем на плоскости очертания крыши. Лишние линии можно стереть.

Инструметом Выдавить/вдавить придаём объем.

Используем «Сдвиг» на крыше, чтобы добавить объёма.

И вдавим плоскость немного внутрь.

Окрасим всё подходящими текстурами и удалим человека. Домик готов для импорта в Unity!

В настройках импорта в Unity надо выставить галочку Generate Colliders, а во вкладке Material – Use External Materials.

При этом, импортируются все материалы и создадутся папки.

Теперь, у вас есть своя собственная модель дома, для использования в играх!

Источник

Создание 3D-города в Unity 5

Загрузка Unity

Как сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unityКак сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unity Как сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unity

Далее вам нужно будет зарегистрироваться. Зарегистрировавшись, вы можете отслеживать свои загрузки и покупки в магазине ресурсов (asset store) Unity. После загрузки Unity запустится. В зависимости от вашей системы, это может занять от двух до восьми минут. После чего откроется диалоговое окно с просьбой ввести учетные данные. После входа в систему пришло время начать новый проект.

Начните New Project и назовите его «My City». Пока что не выбирайте пакеты.

Обратите пристальное внимание на папку, в которую вы добавляете свои проекты, так как все файлы должны оставаться в одном месте. Оставьте дефолтное расположение для этого проекта. После того, как ваш проект открыт, перейдите в меню File > New Scene и назовите вашу сцену «MyFirstCity».

Интерфейс Unity

Как сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unityКак сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unity Как сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unity

Давайте начнем с нижней части.

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

Расположение вкладок (Layout)

Как сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unityКак сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unity Как сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unity

Когда вы впервые откроете Unity, вы увидите расположение вкладок, как на картинке выше. Перейдите в меню Window, затем Layouts, вы можете просмотреть различные варианты компоновки вкладок, доступные в редакторе Unity. Щелкните каждую из них пока не найдете комфортное расположение вкладок.

Вы также можете создать свой собственный layout, щелкнув левой кнопкой мыши на вкладке и перемещая ее куда угодно. В моем случае я использую два монитора, поэтому у меня вкладка Game Scene на одном мониторе, а вкладка редактирования Scene на другом. Поиграйте с ними, пока вы не будете довольны!

Загрузка ресурсов

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

Перейдите в Window и нажмите Asset Store. Откроется вкладка asset store; здесь вы увидите сотни объектов, текстур, персонажей и инструментов Unity. Вы можете приобрести любой предмет, который вам нужен. Хотя в этом уроке я покажу вам, как создавать собственные текстуры, мы также загрузим бесплатные ресурсы. При первом открытии asset store он может попросить вас войти в систему.

Давайте начнем, набрав Yughues Free Concrete Materials в окне поиска. Ваше окно будет выглядеть так, как показано ниже.

Как сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unityКак сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unity Как сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unity

Теперь нажмите кнопку Download. Через несколько секунд откроется окно. Нажмите Import. В зависимости от вашей системы это может занять от двух до десяти минут. После импорта вы увидите новый ресурс на вкладке Project.

Теперь давайте вернемся в asset store и импортируем City Props Pack. Повторите вышеуказанные инструкции.

Мы также будем загружать skybox. Вернитесь в asset store и импортируйте Wispy Skybox.

Теперь пришло время для наших Unity-пакетов. Перейдите в Assets > Import Package. Нам понадобятся Characters (персонажи), Cameras и Environment (камеры и окружающая среда).

Поиск бесплатных ресурсов

Нам нужны текстуры дороги и здания поэтому соблюдая мои обещание о бесплатных ресурсах, поищем в Интернете. Перейдите в Bing и наберите «road» и после появления некоторых изображений убедитесь, что в разделе License выбрана бесплатная лицензия.

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

Чтобы все было организовано, сохраните свои изображения в папке Unity. Возможно, потребуется найти место хранения файлов; обычно местоположение по умолчанию Компьютер > Документы. Теперь нам нужно приблизительно пять строительных текстур. Нажмите на эту ссылку Bing, чтобы перейти к текстурам, которые использовались для этого проекта. Щелкните правой кнопкой мыши и сохраните в той же папке Unity.

Совет: всегда помните, когда вы используете проекты на коммерческой основе, лучше перестраховаться, чем потом сожалеть. Вы можете посетить такие веб-сайты, как Envato Market, чтобы купить royalty-free-изображения.

Теперь давайте создадим папку на нашей вкладке Project и назовем ее «Artwork». Перейдите в Asset > Import Asset и выберите свое изображение. Переместите изображение в папку Artwork.

Совет: Если вы перемещаете свое изображение после сохранения проекта, возможно, ваше изображение не появится или станет розовым (без текстуры). Когда все ваши ресурсы будут загружены, мы готовы начать создание нашего игрового мира. Нажмите File > Save Scene.

Давайте начнем создавать поверхность

Давайте добавим наш ландшафт. Перейдите в Game Object > 3D Object > Terrain. Это добавит 3D-ландшафт в сцену. Сейчас самое время по переключать меню, чтобы привыкнуть к перемещению по игровому миру.

Совет: если у мышки есть колесико, вы можете использовать его для приближения или отдаления от объекта, щелкнув значок Hand (рука).

Как сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unityКак сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unity Как сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unity

Как сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unityКак сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unity Как сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unity

Положение камеры

Когда вы выбираете объект во вкладке Hierarchy, детали объектов отображаются в окне Inspector (справа). Здесь вы можете вносить изменения в объект, добавлять текстуры, добавлять столкновения и добавлять код.

Давайте вернем камеру в правильное положение. Выберите Main Camera на вкладке Hierarchy. Теперь посмотрите на вкладку Inspector справа, в разделе под Transform вы увидите Position. Введите: 265, 20, 20. Теперь ваша камера должна быть в том месте, где мы этого хотим.

Как сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unityКак сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unity Как сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unity

Пойдем по серой кирпичной дороге

Теперь добавим текстуру к ландшафту. Выберите Terrain на вкладке Hierarchy и нажмите на кисть в окне Inspector. В разделе Textures вы увидите Edit Textures. Щелкните левой кнопкой мыши и выберите Add a Texture, и появится небольшое окно, предлагающее выбрать текстуру. После того, как вы нажмете на это поле, отобразятся текстуры, импортированные из Asset Store. Дважды щелкните и добавьте ту, которая вам нравится. Я выбрал Dark Concrete.

Взгляд в небо

Если вам нравится, то Unity поставляется со стандартным skybox, который отлично работает. Думаю, что это немного скучно, поэтому я собираюсь добавить skybox, который мы скачали ранее. Нажмите Main Camera и в окне Inspector нажмите кнопку Add Component в самом низу. Введите Skybox и щелкните по кружочку справа. Откроется окно, в котором вы можете выбрать понравившийся вам skybox, дважды щелкнув его. Теперь, если вы загляните во вкладку Game Scene, вы увидите новый skybox. Пока всё хорошо выглядит!

Если вы создали это

Теперь, когда наша окружающая среда готова, давайте добавим несколько зданий. Перейдите в Game Object > 3D Object > Cube. Сначала вы не увидите куб, потому что он находится на большом расстоянии. Давайте добавим его туда, где мы можем видеть его. Нажмите Cube на вкладке Hierarchy. Давайте разместим куб, введя значения: 300, 25, 100. Давайте также масштабируем его: 20, 50, 20. Можно использовать инструмент Scale (масштаб) или просто ввести размер в поля. После того, как вы добавили первый Cube (куб), щелкните по нему правой кнопкой мыши на вкладке Hierarchy, чтобы переименовать его. Назовите его Building 1.

Как сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unityКак сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unity Как сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unity

Круто. Давайте добавим еще несколько зданий. Повторите вышеописанные действия. Вы увидите дополнительный куб во вкладке Hierarchy как Cube (1), поэтому давайте переименуем его в Building 2, щелкнув правой кнопкой мыши и набрав новое имя. Теперь масштабируем: 20, 70, 20 и позиционируем до: 275, 25, 100.

При добавлении зданий измените масштаб и положение для каждого из них. Следите за тем, чтобы вы удерживаете середину на 25, чтобы они выстроились ровно. Вы можете также использовать панель инструментов для масштабирования и перемещения зданий. Продолжайте это делать до тех пор, пока у вас не будет пять зданий и назовите их последовательно, например, Building 2, Building 3 и так далее. Мои здания располагаются на расстоянии в 25 значений, например: 250, 0, 100, 225, 0, 100 и т. д. Не забудьте сохранить свою сцену!

Совет: Вы также можете щелкнуть правой кнопкой мыши по зданию на вкладке Hierarchy, скопировать и вставить его.

Добавление текстур здания

Теперь мы должны превратить наши кубики в здания. Нажмите на свою папку Artwork на вкладке Project (в которую вы добавили текстуры здания). Выберите текстуру и перетащите ее в поле на вкладке Scene. Вы сразу увидите изменение текстуры во вкладках Scene и Game. Не стесняйтесь настраивать, перемещать и поворачивать здания, пока вы не будете удовлетворены.

Совет: Иногда текстура может быть задом наперед. Это легко исправить, повернуть ось Z на 180.

Создание дороги

Пришло время добавить дорогу. Выберите Game Object > 3D Object > Plane. Поместите ее в значения 250, 0.2, 80. Добавьте поворот по оси Y на 90 и сделайте масштаб 1, 1, 15. Теперь выберите текстуру дороги и добавьте ее к плоскости. Назовите плоскость Road.

Место для всего

Готовые Unity проекты могут иметь тысячи объектов, скриптов и шаблонов экземпляров (prefabs). Важно, чтобы ваши предметы были хорошо упорядочены и сейчас самое подходящее время навести порядок во вкладке Hierarchy.

Любой город состоит из многочисленных зданий, поэтому давайте сохраним наш квартал. Перейдите в Game Object > Create Empty, и теперь вы увидите новый элемент в Hierarchy (иерархии) под названием GameObject. Переименуйте его в Block1(L). Нажмите Building 1, удерживая клавишу Shift и выделите все остальные здания. Теперь вы можете переместить их все под Block1(L), который становится родителем наших зданий.

Как сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unityКак сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unity Как сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unity

Копируем

Теперь вы можете изменить текстуры или загрузить новые, если хотите. При изменении текстуры необходимо щелкнуть отдельное здание, в противном случае будут изменены все текстуры квартала. Переместим Camera (камеру) на 340, 10, 80 и повернем на -80.

Совет: Если вам не нравится способ позиционирования элемента, вы можете перемещать его с помощью инструментов трансформации. Нажмите кнопку сохранить.

Добавление городских декораций

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

Нажмите стрелку вниз в папке City Props Pack на вкладке Project. Прокрутите вниз до папки Prefabs и щелкните стрелку вниз, пока не увидите список объектов. Выберите знак Stop. Когда вы его выберете он будет отображаться в окне Inspector справа.

Перейдем к передней части первого здания. Выберите знак Stop и перетащите его в окно Scene; в зависимости от вашей сцены может понадобиться уменьшить его. Уменьшите масштаб до значений: 0.2, 0.2, 0.2. Отлично!

Давайте проявим творческий подход и добавим больше предметов. Не стесняйтесь выбирать те, которые вам нравятся, и размещать их в любом месте на тротуаре. Помните, что вы можете копировать и вставлять любые объекты на вкладке Hierarchy. В духе упорядочивания объектов, создайте пустой Empty родительский объект под Game Object и назовите его City Props. Следовательно переместите элементы. Сохраните сцену.

Совет: Помните, что если ваши объекты светятся белым цветом, вам необходимо изменить затенение на Legacy Shaders/Bumped Diffuse.

Добавление деревьев

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

Выберите дерево (я выбрал Broadleaf). Дважды щелкните и добавьте. Теперь вы увидите дерево, которое вы выбрали в поле Trees на вкладке Inspector. При перемещении указателя мыши в окне Scene, за ней будет следовать синий круг. Поскольку Brush size равен 1, вы будете размещать по одному дереву за раз. Если вы добавите дерево и оно будет слишком большим, вы можете изменить его размер, в разделе Settings, изменив Tree Height (высоту дерева). Если вы допустили ошибку, нажмите Edit Trees и удалите дерево. После этого вы можете начать все заново.

Как сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unityКак сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unity Как сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unity

Добавление персонажа c видом от третьего лица

Итак, наконец-то мы создали свою среду где захотели и теперь пришло время добавить в него персонажа нашего друга Итана, чтобы было кому любоваться городом. Нажмите стрелку вниз в разделе Standard Assets на вкладке Project, затем Characters > ThirdPersonCharacter. Перейдите в Prefabs и перетащите ThirdPersonController в свою Scene (сцену). Установите контроллер на 315, 0.1, 78 и измените размер на 3, 3, 3.

Вы также можете повернуть его так, чтобы он смотрел в нужном вам направлении. Нажмите Play и вы сможете контролировать Итана. Нажимайте кнопки со стрелками на клавиатуре и бегайте вокруг.

В какой-то момент вы заметите, что он уходит за пределы экрана, поэтому нам нужна камера, чтобы следовать за ним. На вкладке Hierarchy выделите Main Camera (главную камеру) и перетащите ее под пункт ThirdPersonController. Теперь ваша Main Camera должна стать дочерним элементом ThirdPersonController. Теперь, когда вы нажмете Play, камера будет следовать за Итаном.

Добавление контроллера с видом от первого лица

Мы также можем посмотреть на наш игровой мир в режиме от первого лица. Перейдите на вкладку Project. Выберите Standard Assets, Prefab, FPS Controller. Перетащите его в свою сцену, поверните и масштабируйте. Перед тем, как начать игру, важно отметить, что FPS поставляется с собственной камерой, поэтому вам нужно будет удалить MainCamera.

Совет: Если ваш персонаж проваливается сквозь землю, вы, вероятно, располагаете их слишком низко. Дважды щелкните значок на вкладке Hierarchy и вы увидите крупный план на вкладке Scene. Переместите контроллер вверх с помощью стрелки или или измените положение по оси Y на 1.

Поздравляю! Вы создали свой первый 3D-город в Unity 5! Как видите, это легко и весело. Вы можете проявить творческий подход, как вам нравится, и добавить дома, автомобили, магазины и т. д. Оставайтесь с нами, чтобы получить еще больше уроков по Unity в ближайшее время!

Источник

Большой город для мобильных устройств на Unity. Опыт разработки и оптимизации

Как сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unity

Привет Хабр! В этой публикации хочу поделиться опытом разработки массивной мобильной игры, с большим городом и трафиком. Примеры и приемы описанные в публикации не претендуют называться эталонными и идеальными. Я не являюсь дипломированным специалистом и не призываю повторять свой опыт. Целью работы над игрой было — получение интересного опыта, получение оптимизированной игры с открытым миром. При разработке я старался максимально упрощать код. К сожалению, я не использовал ECS, а грешил с singleton.

Игра на тематику мафии. В игре я попытался воссоздать Америку 30-40. По сути игра является экономической стратегий от первого лица. Игрок захватывает бизнес и старается удержать его на плаву.
Реализовано: автомобильный трафик (светофоры, избегание столкновений), human трафик, бар, казино, клуб, квартира игрока, покупка костюма, смена костюма, покупка/покраска/заправка автомобиля, копы, охрана/гангстеры, экономика, продажа/покупка ресурсов.

Архитектура

Как сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unity

Упрощенный AudioManager. Он позволяет добавить сколько угодно Audio компонентов к игровому объекту и при необходимости воспроизводить звук:

При старте метод AddAudio добавляет компонент, и затем из любого места мы может воспроизвести нужный нам звук:

В данном примере, было бы разумнее вынести oneshot проигрывание в метод.

Как выглядит упрощенный InputManager:

Вся система ввода у меня реализована подобным способом. Каких либо проблем со скоростью я не заметил. Это позволило собрать все обработчики нажатий в одном месте — InputManager.

Оптимизация

Перейдем к самому интересному. Для новичков тема оптимизации в Unity болезненна и таит множество подводных камней. Я поделюсь тем, с чем я имел дело.

1. Кэширования компонентов (начнем с простых основ)

Часто на Toster можно встретить вопросы с примерами когда, где GetComponent используют в Update. Так делать нельзя, GetComponent занимается поиском компонента на объекте. Эта операция медленная и вызывая ее в Update, вы рискуете потерять драгоценные FPS. Вот тут есть неплохое объяснение кэширования компонентов.

2. Использование SendMessage

Использование SendMessage() медленнее чем GetComponent(). SendMessage проходи через каждый скрипт, чтобы найти метод с нужным именем, используя сравнение строк. GetComponent находит скрипт через сравнение типов и вызывает метод напрямую.

3. Сравнение тегов объекта

Используйте метод CompareTag вместо obj.tag == «string». В Unity извлечение строк из игровых объектов создает дубликат строки, что прибавляет работы для сборщика мусора. Лучше избегать получения названия игрового объекта. Нельзя вызывать CompareTag в Update как и прочите тяжелые операции.

Чем меньше материалов тем лучше. Сократите количество материалов насколько это возможно. Добиться этого помогают текстурные атласа. К примеру почти весь город в моей игре собран из 2-3 атласов. Тут нужно учесть, что не все мобильные устройства способны работать с большими атласами. Поэтому если вы хотите поддерживать устройства 11-13 годов, стоит это учитывать. Я решил отказать от поддержки андроид ниже 5.1, так как в основном это старые устройства. Тем более, игра работает на OpenGL 3.x из-за Linear Rendering.

Тут легко просадить FPS до 10. Как оказалось, даже статичные объекты взаимодействуют и участвуют в расчетах. Я ошибочно думал, что статичные физические объекты (объекты у которых есть компонент RigidBody) полностью пассивны до востребования. В заблуждение меня ввел старый туториал в котором говорилось, что везде где есть коллайдер должен быть RigidBody. Теперь все мои статичные объекты это Static+ BoxCollider. Там где мне нужна физика, к примеру фонарные столбы которые можно сбить, я думаю подрубать компонент RigidBody при необходимости.

Слои — спасательный круг при оптимизации. Отключайте ненужное взаимодействие при помощи слоев. При рейкастинге используйте маски слоев. Зачем нам лишние просчеты? Помните, что если у вашего объекта сложная коллайдерная сетка и вы стреляете в него лучем, то лучше создать простой родительский коллайдер для «ловли» лучей. Чем сложнее колладер, тем больше просчетов.

6. Occlusion culling + Lod

При крупной сцене, без occlusion culling не обойтись. Для отключения объектов (деревья, столбы и.т.д) на большом расстоянии я использую Lod.

Как сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unity

Как сделать строительство в unity. Смотреть фото Как сделать строительство в unity. Смотреть картинку Как сделать строительство в unity. Картинка про Как сделать строительство в unity. Фото Как сделать строительство в unity

Все готовые реализации пула объектов которые я нашел, используют instantiate. Также они удаляют и создают объекты. Я боюсь instantiate во всех его проявлениях. Медленная операция, которая фризит игру, при более менее крупном объекте. Я решил пойти по простому и быстрому пути — весь мой пул существует в виде физических gameobjects которые я просто отключаю и включаю при необходимости. Это бьет по оперативной памяти, но лучше уж так. Оперативной памяти у современных устройств от 1GB, игра потребляет 300-500 МБ.

Простой пул для управления боевыми ботами:

База данных

В качестве БД я использую sqlite — удобно и быстро. Данные представлены в виде таблицы, можно составлять сложные запросы. В классе для работы с БД 800 строк когда. Я не представляю как бы это смотрелось на XML/JSON.

Проблемы и планы на будущее

Textures: 304 / 374.3 MB
Meshes: 295 / 304.0 MB
Materials: 101 / 148.0 KB (тут скорее всего несоответствие)
AnimationClips: 24 / 2.8 MB
AudioClips: 22 / 30.3 MB
Assets: 21761
GameObjects in Scene: 29450
Total Objects in Scene: 111645
Total Object Count: 133406
GC Allocations per Frame: 70 / 2.0 KB

Всего 4800 строк кода на C#.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *