Файлы unity3d на андроид как удалить

Обновлено: 07.07.2024

Всем привет! Меня зовут Илья, я работаю разработчиком мобильных игр на Unity вот уже несколько лет и сегодня хотел бы поделиться небольшим чек-листом (или гайдом) по оптимизации мобильных игр для начинающих. В этой статье мы коснемся как графических, так и других аспектов оптимизации "на скорую руку" когда вам нужно быстро поднять FPS ваших мобильных игр.

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

Итак, с предисловием закончили. Поехали!

1) Постарайтесь использовать одну камеру на сцене. Чем больше камер вы используете, тем выше нагрузка на CPU.

2) Избегайте использования пост-обработки, это серьезно увеличивает нагрузку на GPU за счет того, что движку приходится обрабатывать повторно каждый кадр при отрисовке.

4) Используйте MSAA не выше 4X на любых мобильных платформах.

5) Используйте Forward-режим рендеринга без использования HDR, чтобы снизить нагрузку на GPU.

6) Выставьте необходимые Clear Flags на камере, чтобы указать, что нужно очищать при рендеренге каждый кадр.

7) При разработке 3D игр, также настройте допустимый Clipping Planes для ограничения области прорисовки дальних объектов.

1) Старайтесь использовать облегченные API, как Vulkan или Metal если это возможно. Для 2D игр достаточно OpenGL 2.

2) Используйте Occlusion Culling для выгрузки объектов вне поля зрения.

3) Используйте только запеченное освещение, тени и Reflection Probes (от них лучше отказаться вовсе). Не используйте ни в коем случае Realtime расчеты.

4) Старайтесь использовать Static и Dynamic Batching для ваших объектов для объединения геометрии.

5) Старайтесь не использовать процедурные системы частиц.

6) Старайтесь по минимуму использовать анимации. Где это возможно, анимируйте объекты через ваши скрипты или, к примеру через DOTween.

7) Установите значение флага "Realtime Pixel Lights" на 0, если это возможно.

8) Выключите Soft Particles.

9) Старайтесь использовать простые шейдера с минимальным количеством инструкций.

10) Избегайте сэмплинга в Reflection Probes.

11) Используйте общий материал для ваших объектов.

12) Используйте Gamma рендеринг вместо Linear.

13) Постарайтесь использовать URP-рендеринг вместо Legacy (Built-in).

14) Постарайтесь изучить и использовать ShaderVariants в вашем проекте., для уменьшения нагрузки на GPU.

15) При добавление/удалении шейдеров в проекте, держите актуальным список Always Inculded Shaders.

16) Иногда требуется разогреть видео-чип перед стартом игры, чтобы исключить микро-фризы при первой отрисовке объекта. Для этого вы можете прогревать их в процессе загрузки игры, инициализируя объекты на сцене Preload.

1) Используйте Sprite атласы для интерфейсов и объединения графики в единый спрайт. Таким образом ваши объекты будут занимать меньше памяти на GPU. Желательно использовать последнюю версию инструмента для работы с атласами.

2) Постарайтесь избегать прозрачности в спрайтах.

3) Включите "Optimize Game Objects" при импорте мешей с ригом.

4) Минимизируйте количество деревьев в анимации.

5) Уменьшите количество костей и вертексов для анимации.

6) Используйте уровни отрисовки (LOD) для дальних объектов (касаемо 3D графики).

7) Избегайте Multi-Pass шейдеров.

8) Попробуйте использовать стриминг текстур.

9) Настройте оптимальные параметры для компрессии текстур, 3D моделей, анимаций и другого контента. Если есть необходимость - настройте MIPMAPS для тяжелых объектов.

10) Отключите Read/Write в импорте ассетов, где это возможно.

11) Настройте предзагрузку шейдеров, которые необходимы в геймплее.

12) Отключите все анимационные контроллеры. Включайте их только при необходимости, поскольку даже пустые Animation Controller создают нагрузку на GPU.

13) Не воспроизводите вместе Unity-анимации и DOTween анимации.

1) Используйте Sprite атласы. Это важно!

2) Избегайте изменения на UI каждый кадр отрисовки. Лучше изучите как работают события и делайте изменения через слушатели.

3) По возможности откажитесь от Rich Text, автоматической подгонки размера текста. В идеале - лучше использовать TextMesh вместо Unity Text.

4) Не используйте автоматическую систему слоев в UI. Также постарайтесь сократить количество UI слоев до 2х.

5) Настройте материалы у вашего UI. Не используйте UI без материалов, желательно не использовать стандартные шейдера.

6) Старайтесь не использовать пустые и невидимые объекты с компонентами Image. Все они влияют на нагрузку GPU.

1) Включите Straming на длинных аудио-клипах.

2) Отключите предзагрузку аудио-файлов там, где она не нужна.

3) Настройте оптимальную компрессию аудио.

4) Ограничьте хранение ссылок на аудио в памяти.

5) Настройте Bufffer size на Best perfomance.

6) Отключите все Plugins для Audio. Уменьшите количество потоков в половину от стандартного значения.

7) При правильном использовании Mixer можно снизить нагрузку на CPU, разбив отдельные звуки как дорожки микшера.

1) Настройте Addressables вместо Asset Bundles. Обо всех преимуществах в экономии памяти вы можете почитать на сайте Unity.

2) Избегайте использования ресурсов из директории "Resources".

3) Уменьшите размер вашей сборки при помощи CDN и последующей загрузки с него ресурсов.

1) Не используйте бесконечные Coroutine-функции, старайтесь минимизировать их размер.

2) Используйте пулы объектов, вместо реинициализации и уничтожения объектов со сцены.

3) Используйте ваш менеджер управления состояниями. Старайтесь не использовать обновления состояния объектов через Update.

4) Старайтесь убрать все неиспользуемые ссылки в объектах. Старайтесь не использовать на глобальных объектах тяжелых ссылок.

5) Постарайтесь вручную контролировать Garbadge Collector.

6) Избегайте генеративных методов Garbadge Collector-а, таких как FindObjectsOfType.

8) По возможности, старайтесь не хранить ссылки на все подряд в памяти. Для удобства, можете использовать Zenject для внедрения зависимостей.

9) Не используйте SpriteAtlas.GetSprite во избежание утечек памяти.

1) Оставьте только те Build Targets, которые вы хотите использовать.

3) Используйте GPU Skinning, если это возможно.

4) Не забудьте выставить флаг "static" у тех объектов на сцене, которые являются статичными.

5) В иерархии сцены, постарайтесь не использовать динамичные объекты с большим количеством дочерних или родительских объектов.

6) Включите Multithreaded rendering и Graphics Jobs в настройках проекта.

Соблюдая данный чек-лист вы сможете добиться значительного уменьшения Draw Calls, а также оптимизировать без лишних затрат ваш проект. Желательно задуматься об оптимизации вначале работы над вашим проектом, поскольку это может сэкономить вам нервы в дальнейшем.

Надеюсь, вы подчерпнули для себя что-то новое. И буду рад вашим дополнениям!

P.S. Если будет интерес, в следующих статьях могу подробнее рассказывать о каждом разделе с подробным объяснением и сравнениями.

1. Не используйте этот чеклист пока не сделали первую игру
2. Не используйте этот чеклист пока не понимаете что значит любой из этих пунктов
3. Не думайте об оптимизации, думайте о геймплее, когда ваша игра взорвет рынок - наймёте Илью Сергеича и он оптимизирует вам игру.

Если заранее об оптимизации хоть чуть чуть подумать то это может сыграть на руку. Тот же Google play больше шансов даст фичеринг для более оптимизированной игры.

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

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

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

большинство пунктов выполняются автоматически, реально полезные советы - про пулы и переход на LWRP

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

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

что лучше динамические или статические пулы ? )))

Что лучше хлеб или батон. Всему есть свое применение.

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

Насчёт URP в новых версиях он более менее стабильный. Вообще если речь идёт о maximum power то лучше вообще отказаться от unity 🤣

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

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

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

Который будет хранить тысячи лишних ссылок вместо вас (:

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

Я сам на проектах Zenject использую. Но он тоже не панацея)

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

Тестировал производительность URP и он всегда был медленее чем Built-In рендеринг.
То же самое с Вулканом против OpenGL.

Хм, у меня обратная картина. Возможно стоит изучить старые устройства. Но для 2d графики opengl 2 будет эталон если не использовать какие то новороченные функции.

Делать анимации скриптами прожорливее 🤔

Нет, простые анимации лучше сделать кодом, а не при помощи системы анимаций Unity. Она более прожорливая

Не уверен. Делал вращение монеток в 3д и поскольку их было много, то через Animation было выше на 3-5 фпс. Плюс можно выставить culling всякие
Наверное от ситуации зависит, но надо будет проверить с DOTwin 🙌

дотвин помойка, быстрее всего вращать кучи объектов поможет ECS :))

Можно подробнее? Спасибо.

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

Не используйте автоматическую систему слоев в UI

Что за автоматическая система слоёв, поясните, пожалуйста.

Content size fitter в сочетании с другими элементами, например Vertical Layout Group

Т.е. имелось в виду автоматическую систему размеров, а не слоёв, полагаю.
Но UI канвас, насколько мне известно, обновляется только при изменении содержимого, так что вроде это не должно быть проблемой, если только там не какие-то динамически изменяемые каждый фрейм элементы. И это решается отдельным канвасом с выносом туда таких элементов.

Лол, а что тогда использовать? Свои решения городить?
Например Content size fitter очень часто выручает для вёрстки под разные экраны

Не стоит юзать их для автоматической подгонки UI везде где не приколочено. Постараться минимизировать это

Тестировал на мид/лоу-енд девайсах. На топовом железе разницы не сильно видно.

У меня лично URP помог таки поднять FPS на 2D игре. Возможно суть не в самом URP, а в шейдерах

Как минимум в 6ом пункте последнего абзаца 🤣

Недостаточно!)
Burst и Jobs уже в нормальном состоянии, пора их вводить в оборот.

Хм, возможно это будет полезно включить да в список

Жаль, что Entities еще не довели до ума.
Полный DOTS стак куда более приятный для разработки когда его раскуришь.

5) Настройте материалы у вашего UI. Не используйте UI без материалов, желательно не использовать стандартные шейдера.

А это что значит?

Built in шейдера напичканы слишком разной всячиной которая по факту не нужна на 90% проектов.

я про первую половину - что значит, не использовать ui без материалов?

В настройках UI компонентов указывать материал, желательно на базе своего кастомного шейдера

Все равно плохо понимаю о чем речь, можно какую-нибудь статью на тему того, чем плох UI-Default?

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

Может быть, речь о Standard шейдере? там правда овердофига всего, в дефолте же ничего нет кроме колор маски и альфа клипа

ну там ещё есть шейдер варианты, они автоматом лишнее удаляют если оно не используется, но кому это нужно если есть ПУНКТ ))

Про варианты тоже написано было

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

Используйте GPU Skinning, если это возможно.

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

Интересный кейс, надо будет разобрать. Возможно есть ряд gpu которые умеют с ним работать.

Очень познавательно, с удовольствием почитал бы более подробные материалы на эту тему!

1) Не используйте бесконечные Coroutine-функции

но почему?

Просто не знаю, вроде порой удобный способ запустить корутину с while(true) и пусть работает себе пока объект активен 🤔

Поговаривают что invoke лучше

Hey guys, I had always considered Unity Invoke method to be slow because it was based on…

Там пример с запуском invoke и coroutine миллион раз подряд(а не одна корутина против циклического запуска invoke раз за разом), в такой ситуации вообще ни тот ни другой не нужно использовать. Если событие нужно вызвать разок через какое то время и забыть, то invoke подойдёт, а если это сложное событие где нужно lerp проводить в процессе то нет и если бесконечный цикл внутри корутины тут опять же invoke бесполезен, есть invokeRepeat, но опять же он не будет иметь логики внутри. А если мне нужно чтобы проверка условия проводилась, причем если игрок близко ждал один таймер, если далеко уходил на другой интервал, то не подходит invokeRepeat, а обычный invoke вызывать как раз таки лишнее время, чем корутина 1. Возможно речь шла о том что не надо делать так чтобы корутина сама себя в конце запускала? 🤷🏻‍♂️ ред.

16) Иногда требуется разогреть видео-чип перед стартом игры, чтобы исключить микро-фризы при первой отрисовке объекта.
На сковороде прогреть лол. Вот кому поможет этот совет? Речь идёт о компиляции шейдеров. Так и пишите это. Скомпилируйте все необходимые шейдеры заранее используя ShaderVariantCollection. Делать это нужно один раз при запуске игры. Если шейдеры уже скомпилированны, повторной компиляции не будет. Инициализовать объекты ради компиляции шейдеров не нужно.

Не только в шейдерах дело, в том то и дело. Есть ещё текстуры и прочее. Да, термин прогреть немного странный 🤣 это больше касается динамики, в частности партиклы

Я, конечно, не гуру, но все же.
Работа с камерой:
1) Одну камеру использовать не всегда удобно и выгодно с точки зрения оптимизации. Часто можно одной камерой рисовать трехмерную сцену, а другой камерой рисовать меню например (да как угодно можно).
7) Лучше нормально лоды сделать и не выдумывать.
Работа с рендерингом:
4) Это не имеет смысла часто. Лучше бы расписали что это такое и зачем.
6) Анимации гораздо эффективнее работают зачастую, они позволяют заранее запомнить то, что должен высчитывать скрипт каждый кадр.
16) Тут прямо очень надо разъяснить.
Работа с ресурсами:
1) Это тоже далеко не всегда сработает, есть куча особенностей работы с атласами, часто они могут только навредить (например можно получить атлас, который начнет крашить айфоны из-за своих размеров).
2) А почему? Вот это было бы полезно расписать. Прозрачность не плохая сама по себе, она просто плохо сжимается.
13) Не вижу в этом ничего плохого.
Оптимизация кода:
1) В этом нет ничего плохого, часто через них выгоднее сделать логику даже. Лучше распишите почему считаете их неэффективными.
2) Часто это отнимает ценную оперативку т увеличивает нагрузку на процессор (нужно как-то управлять пулом)
6) В этом нет ничего плохого, если они выполняются не часто, при инициализации например
Настройка Player Settings:
2) Это имеет очень много подводных камней.
5) Почему этот пункт здесь?
6) При неумелом использовании это только навредит

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

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

Я только скопировал папку с ресурсами / package.json в новый проект Unity, потому что остальные файлы грязные и кэшировали много бесполезной информации.

Где находятся файлы с подробными данными о сценах? Я хочу скопировать это, чтобы я мог запускать свои сцены со всеми ссылками на объекты и сценариями, установленными на правильные игровые объекты.

2 ответа

Убираться

Обычно вам всегда нужны папки Assets и ProjectSettings .

Все остальное вы можете удалить, и Unity воссоздаст / перекомпилирует их, когда вы снова откроете проект.

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

Как говорят имена

  • Assets - это все ваши активы, такие как сценарии, изображения, сборные конструкции и т. Д., Включая также сцены.
  • ProjectSettings - это общие настройки вашего проекта, касающиеся таких вещей, как качество, физика, струны плеера и т. Д.

Для меня также имеет смысл сохранить некоторые файлы Library/*.asset .. они хранят, например, настройки сборки, целевую платформу и т. д., поэтому мне не нужно настраивать их / переключать платформу с нуля каждый раз, когда я "перезагружаюсь". Конечно, вам решать, хотите ли вы это сделать.

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

Также см. Использование внешних систем контроля версий с Unity для получения общей информации о настройке версии. контроль вашего проекта (ов).

Поэтому, когда я хочу очистить репозиторий перед копированием, я обычно использую следующее как *.gitignore (есть также более полные версии, например, из Github).

Все, что здесь перечислено, можно в основном удалить и будет повторно скомпилировано при следующем открытии проекта в Unity. (Строки, начинающиеся с ! , являются исключениями, которые я добавил, потому что, как я сказал, имело смысл сохранить и их.)

Если это еще не сделано, сначала инициализируйте запущенный репозиторий.

Это покажет некоторые предупреждения для каждого файла, который указан в .gitignore , но вы можете игнорировать эти предупреждения. Он только говорит что-то подобное, например

Вы пытаетесь добавить игнорируемый файл в коммит, и он будет пропущен

Сделать вашу первую фиксацию.

Теперь, наконец, ты можешь бежать

Который удаляет все файлы, которые не отслеживаются (поэтому убедитесь, что у вас всегда есть все файлы, которые вы хотите сохранить, по крайней мере, в стадии постановки ( git add ) или, что лучше, в первую очередь) или будет проигнорирован *.gitignore .

-f
Если для переменной конфигурации Git clean.requireForce не задано значение false, git clean откажется удалять файлы или каталоги, если не указано -f, -n или -i. Git откажется удалять каталоги с подкаталогом или файлом .git, если не указан второй -f.

-d
Удалите неотслеживаемые каталоги в дополнение к неотслеживаемым файлам. Если неотслеживаемый каталог управляется другим репозиторием Git, он не удаляется по умолчанию. Дважды используйте параметр -f, если вы действительно хотите удалить такой каталог.

-x
Не используйте стандартные правила игнорирования, считываемые из .gitignore (для каждого каталога) и $ GIT_DIR / info / exclude, но все же используйте правила игнорирования, указанные с параметрами -e. Это позволяет удалить все неотслеживаемые файлы, включая продукты сборки. Это можно использовать (возможно, вместе с git reset) для создания нетронутого рабочего каталога для тестирования чистой сборки.

Миграция с помощью UnityPackage

Другой вариант перемещения сцен или частей активов между двумя разными проектами - использование UnityPackage

Выдержки из Документов:

  1. Откройте проект, из которого хотите экспортировать активы.

  2. Выберите Assets & rightarrow; Export Package из меню, чтобы открыть диалоговое окно Exporting Package. (См. Изображение диалогового окна «Экспорт пакета». ниже.)

  3. В диалоговом окне выберите активы, которые вы хотите включить в пакет, щелкнув соответствующие флажки.

  4. Не снимайте флажок "Включить зависимости", чтобы автоматически выбирать любые ресурсы, используемые выбранными вами.

  5. Нажмите «Экспорт», чтобы открыть файловый менеджер и выбрать, где вы хотите сохранить файл пакета.

  6. Назовите и сохраните пакет где угодно

В качестве альтернативы шагу 2 вы также можете щелкнуть правой кнопкой мыши по папке Assets в Project View и найти параметр Export Package в контекстное меню.

а затем в новом проекте импортируйте UnityPackage

  1. Откройте проект, в который вы хотите импортировать активы.
  2. Выберите Assets & rightarrow; Импорт пакета & rightarrow; Пользовательский пакет .
  3. В проводнике файлов выберите нужный пакет, и появится диалоговое окно «Импорт пакета Unity» со всеми предварительно отмеченными элементами пакета, готовыми к установке. (См. Изображение диалогового окна «Импорт пакета Unity» ниже.)
  4. Выберите Import , и Unity поместит содержимое пакета в папку Assets , к которой вы можете получить доступ из вашего Project view .

В качестве альтернативы шагам 2 и 4 вы даже можете просто перетащить файл unitypackage в папку Assets через редактор Unity.

Я хотел сделать что-то подобное, что применимо к части «Перенести на другой компьютер».

Я заметил, что мои проекты занимают довольно много места, и захотел очистить проект. Я выполнил derHugo, ответив на рекомендованную процедуру «git clean», но используя его связанный файл GitHub .gitignore.

Мне пришлось внести некоторые изменения, чтобы он работал на Unity 19.4:

По сути, я не игнорировал всю папку библиотеки и игнорировал только следующее:

Вот процедура, которой вы должны следовать:

  • Сделайте резервную копию вашего проекта на всякий случай.
  • Поместите прилагаемый файл .gitignore в корневой каталог вашего проекта.
  • Выполните следующие команды:

* Обратите внимание, что опция -X написана с заглавной буквы в команде git clean, это позволяет избежать удаления любой пустой и неотслеживаемой папки.

Чтобы убедиться, что все в порядке:

  • Загрузите свой проект Unity и убедитесь, что все по-прежнему работает правильно.
  • Еще раз запустите git clean -Xfd, чтобы очистить файлы проекта, перестроенные Unity.

Еще раз благодарим derHugo за его подробный ответ, который использовался для работы с последними выпусками Unity.

Опишем процесс сборки проекта под платформу Android, которая поддерживается большинством смартфонов.

Для начала сборки необходимо открыть окно Build Settings из пункта меню File -> Build Settings… (или нажать комбинацию клавиш Ctrl + Shift + B):

Окно Build Settings

Шаг 1. Выбор платформы

В окне Build Settings выбрать платформу Android и нажать на кнопку Switch Platform:

Выбор платформы Android

Выбор платформы Android

Шаг 2. Проверить и отредактировать (если надо) настройки в в окне Project Settings, в разделе Player:

1) заполнить поля:

Company Name (писать по-английски и лучше без знаков препинания и пробелов),

Product Name (аналогично – по-английски и без специальных символов и пробелов),

Version (можно оставить значение по умолчанию, но если приложение собирается повторно, то значение надо менять на большее; тогда при установке новой версии приложения на смартфон существующее приложение обновится. Если это число оставить прежним, потребуется сначала удалить установленное ранее приложение).

2) задать изображение для иконки приложения, добавив его в Default Icon.

3) если необходимо, в разделе Resolution and Presentation можно зафиксировать ориентацию приложения: горизонтальное (Landscape) или вертикальное (Portrait):

Ориентация приложения

Ориентация приложения

4) в разделе Other Settings проверить правильность сформированного идентификатора в поле Package Name:

Это минимальный набор настроек, которые стоит отредактировать. После этого окно Project Settings можно закрыть.

Шаг 3. Перечислить в окне Build Settings сцены, которые должны попасть в сборку (build) проекта:

Если сцена всего одна, и она открыта в редакторе, можно просто нажать на кнопку Add Open Scenes.

Дополнительные сцены можно перетащить мышью из нужной папки окна Project.

Если в окне Scenes in Build указана не та сцена, её можно выделить мышью и удалить, нажав на клавишу Delete на клавиатуре компьютера.

Шаг 4. Нажать на кнопку Build в правом нижнем углу окна Build Settings, указать папку и имя собираемого файла в формате .apk и нажать на кнопку Сохранить (Save):

Собранный файл .apk переписать на смартфон, открыть его на смартфоне и установить приложение. После этого можно начать тестировать свою мобильную игру или приложение на смартфоне.

Отдельно стоит сказать про систему подписки, поскольку Unity не является полностью бесплатным продуктом. Существует несколько видов подписок:

  • Personal. Бесплатная версия, которая содержит все основные функции движка. Имеет следующее ограничение: доход в год или объём привлечённых средств не должен превышать 100000$.
  • Plus. За 35 долларов в месяц предоставляются различные отчёты и аналитика, а также возможность изменять заставочный экран, 20%-ая скидка на покупки в Asset Store и различные мелкие преимущества. Имеет следующее ограничение: доход за год или объём привлечённых средств не должен превышать 200000$.
  • Pro. За 125 долларов в месяц включает в себя все преимущества версии Plus и дополнительно профессиональный сервис и премиум-поддержку. Без ограничений по обороту или объёму средств.
  • Отдельные версии для бизнеса (используются крупными компаниями).

Таким образом, инди-разработчикам с малыми бюджетами должно быть достаточно версии Personal или Plus, в ином случае придётся оформлять подписку Pro. В данной статье воспользуемся бесплатной версией для первого запуска.

Для того, чтобы начать установку Unity, нужно перейти на сайт Unity Store, где будет предложено выбрать тип подписки. Как уже говорилось выше, выберем Personal.


Затем будет предложено принять условия использования и загрузить установщик. Также можно ознакомиться с системными требованиями для работы с Unity.



После этого останется только выбрать путь установки и начать инсталляцию Unity.

Закончив установку и запустив Unity, нам предлагается войти под своим аккаунтом.


Затем снова будет предложено выбрать подписку, всё также остановимся на Personal. В этом случае нужно будет подтвердить, что годовой доход компании составляет менее 100000$, либо что Unity используется в целях обучения.


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


Настроив Unity, мы попадаем на экран выбора\создания проекта. Здесь нужно нажать New, чтобы создать свой новый проект.


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


Закончив с этим, нажмите Create project, чтобы создать проект. После этого откроется окно редактора с заранее сгенерированной сценой.


Не будем пока что разбираться с тонкостями программирования и возьмём для примера готовую игру. Для этого здесь существует Asset Store, который содержит огромное количество готовых моделей, анимаций, звуков (и даже игр), как платных, так и бесплатных.

Чтобы открыть Asset Store, нужно в меню Window выбрать Asset Store (комбинация клавиш Ctrl-9).



Нажав Download и тем самым скачав его, вы можете затем импортировать себе в проект. Для этого нажмите Import, после чего появится предупреждение о том, что настройки проекта после импорта будут изменены.


Согласившись на импорт, вы увидите окно, в котором нужно выбрать, какие компоненты импортировать. Выбираем все и нажимаем Import.



В результате в окне 3D-редактора появится сцена игры.


Вы можете проверить, как игра работает, прямо в Unity, нажав на кнопку Play над окном редактора.


Примечание: если вы пользуетесь Android Studio, то у вас уже установлены все необходимые компоненты и поэтому можно смело переходить к следующему шагу.

Для того, чтобы собрать получившуюся игру на Android, нужно установить следующие инструменты:

Для начала, необходимо изменить платформу разработки на Android. Для этого в Unity откройте меню File и выберите Build Settings.


В появившемся окне нужно выбрать Android и затем нажать Switch platform.


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

Теперь нам нужно указать имя пакета для приложения.


В правой части Unity откроется окно с множеством различных настроек, таких как версия приложения, целевой и минимальный SDK, выбор иконки и т.д. Здесь нам нужно в блоке Other Settings найти Identification и задать имя пакета в поле Package Name. При желании можно также изменить и другие параметры.



В появившемся окне нужно перейти в External Tools и в полях SDK и JDK указать соответствующие пути, после чего закрыть окно.



Осталось только нажать Build, после чего Unity приступит к сборке приложения. Перед этим вам может быть предложено выбрать папку, куда будут сохраняться собранные файлы приложений, а также имя APK-файла.

В результате в папке, которую вы указали, появится собранный APK-файл, готовый к установке на эмуляторе или на реальном устройстве.

Посмотрим, что находится внутри собранного APK. Для этого воспользуемся утилитой APK Analyzer, которая входит в состав Android Studio,


Размер APK-файла в несжатом виде составляет 21,1 MB, в сжатом же 20,9 MB. Как можно увидеть из графика, большую часть объёма занимают сторонние библиотеки, добавленные Unity. Затем в assets расположены все ресурсы, которые используются в собранной сцене. Файл classes.dex содержит всего 89 классов и 479 методов.

Кроме того, если заглянуть в AndroidManifest.xml, приложение состоит из одной активности.

На этом всё. В этой статье мы научились устанавливать и настраивать Unity, а также собрали своё первое приложение на Android.

Использование Unity для разработки приложений : 5 комментариев

Какое блин *создание приложений* зачем разводить людей? Пишите сразу КАК СКОПИРОВАТЬ ИГРУ ИЗ АСЕТ СТОР ЮНИТИ! ОБНАГЛЕЛИ! ХОТЕЛ НАУЧИТЬСЯ ДЕЛАТЬ ПРИЛОЖЕНИЯ! А ТУТ: КОПИРУЙ ИЗ АСЕТ СТОР И ВСЁ!

так ты из тех кто придумывает велосипед? ) все по делу, для чайников разжевал автор!

скажите пожайлуста как сделать кнопки,для управления

Читайте также: