Как открыть апк файл в unity

Обновлено: 07.07.2024

Я помогал своему другу в моддинге игр Unity без файлов Assembly-Csharp.dll (или других dll), поэтому после написания этого простого урока я решил поделиться им со всеми, в надежде, что это поможет новым моддерам подняться на Лестница успеха.

Первое, что нужно сделать, это убедиться, что это правильный метод. Что ж, если вы ранее модифицировали свой apk, отредактировав файл Assembly-Csharp.dll, а теперь в последнем обновлении вы переходите в Assets / Bin / Data / Managed / и СЮРПРИЗ! файлов dll больше нет, то вам определенно нужно продолжить чтение этого руководства.

Причина, по которой вы больше не находите dll, заключается в том, что Unity недавно добавила возможность экспорта игр с использованием метода il2cpp, который, в отличие от dll, экспортирует все игровые коды в файл с именем «libil2cpp.so». Это будет не так просто, как модификация файлов DLL, но немного попрактиковавшись, вы обнаружите, что с помощью этого нового метода можно было бы даже быстрее, чем с модификацией обычных dll, как только вы узнаете, что искать.

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


Сложность: средняя
Требуемое время: минуты 30 в первый раз, затем минуты 5 или около того
Требуемые навыки: среднее знание моддинга + опциональное знание языка ARM


1) Первое, что нужно сделать, это взять последнюю версию дампера Il2cpp: Perfare / Il2CppDumper И распакуйте его

2) Теперь из APK-файла вам нужно извлечь файлы:

активы / бен / Data / Управляемый / Metadata / глобальный metadata.dat
lib / armeabi-v7a / libil2cpp.so (я предлагаю сохранить дополнительную копию этого файла)

Рекомендуется распаковать их в той же папке дампера il2cpp.

3) Если есть папка lib / x86, вы можете удалить ее из файла apk (если вы не знаете коды операций x86, и в любом случае вам придется выполнять двойную работу, в то время как большинство устройств могут читать файлы apk даже без версии x86, поэтому Вы могли бы избежать этого ненужного шага)

4) Теперь запустите файл «Il2CppDumper.exe», и он попросит вас выбрать два файла. Первый, который вам нужно выбрать, - это файл libil2cpp.so, который вы ранее переместили из файла apk, а второй - global-metadata.dat.

5) если вы используете последнюю версию, ПРОПУСТИТЕ ШАГ 5 и 6 и переходите к шагу 7.

Затем он может спросить вас о версии Unity (в зависимости от загруженной вами версии дампера il2cpp), вы можете попробовать, набрав сначала 1, и если он выдаст ошибку, вы можете повторить процесс и вместо этого ввести 2 (насколько я знаю , у моддера нет быстрого и простого способа узнать, какая версия Unity использовалась для сборки игры, но если я ошибаюсь, дайте мне знать, и я обновлю этот шаг).

6) Он попросит вас выбрать метод дампа, предлагая диапазон для выбора от 1 (Ручной) до 5 (Символ), я обычно выбираю 4.

7) Сценарий теперь сгенерирует файл с именем dump.cs и папку с именем «Managed», если этого не произойдет, вам, вероятно, придется обратиться к шагу 5 и повторить попытку, иначе игра, вероятно, защищена от сброса.

8) dump.cs - это простой текстовый файл (откройте его с помощью Notepad ++) со списком функций, за которым следует смещение, например: общедоступный int get_accuracy // 0x123456 . Вы можете найти свою функцию, выполнив поиск по ее имени, если оно вам уже известно, в противном случае обратитесь к шагу 8a.

где:
общедоступный int указывает, что это Int32 функция (другие распространенные типы функций bool = Boolean, float = Single, и Void);
get_accuracy - это имя функции (идентично имени функции в старой dll-версии игры);
0x123456 что в упрощенном виде просто: 123456 , это смещение (позиция этой функции в файле libil2cpp.so);

8a) папка Managed содержит обычные файлы .dll, но с пустыми функциями полезно найти функцию, только если вы еще не знаете, как она вызывается. Если вы хотите перейти к этому альтернативному методу, чтобы найти функцию, просто перетащите все библиотеки в NET Reflector (или DnSpy) и найдите функцию, которую нужно отредактировать, затем перейдите в файл dump.cs и найдите ту же функцию. чтобы найти смещения, как показано в шаге 8.

9) Откройте "Hxd", если у вас его нет, скачать его здесь.

10) Перетащите файл libil2cpp.so в окно Hxd, нажмите Ctrl + G, чтобы открыть окно «Смещение поиска», и вставьте смещение из найденной функции (в данном примере 123456) и нажмите клавишу ввода.

11) Если измененная вами функция представляет собой INT32 и вы просто хотите вернуть очень высокое значение, выполните следующие действия: выберите первые байты 8 в окне Hxd, начиная с точки, которую вы взяли после нажатия клавиши Enter (байт последовательность букв и цифр 2 (например, 4F или 4C и т. д.) и, после выбора, вставьте вместо них следующие байты: FF 04 E0 E3 1E FF 2F E1 (убедитесь, что вы заменяете только 8 байтов с этими другими байтами 8).

FF 04 E0 E3 = MOV R0, 0xFFFFFF = ldc.i4 -> 16777215
1E FF 2F E1 = BX LR = ret

так что вы возвращаете очень очень высокое значение.

Если вы хотите вернуть только 1 (true), вы можете написать:

01 00 A0 E3 = MOV R0, 1 = ldc.i4.1
1E FF 2F E1 = BX LR = ret

и если вы хотите вернуть 0 (false), вы можете написать:

00 00 A0 E3 = MOV R0, 0 = ldc.i4.0
1E FF 2F E1 = BX LR = ret


Это руководство не касается кодов операций ARM, в любом случае приведенные выше коды являются HEX-эквивалентом значений ARM, которые используются в файле libil2cpp.so и многих других файлах lib, которые вы будете редактировать в своей жизни моддинга.

Хороший способ проверить коды операций ARM - использовать наши эксклюзивные ЛУЧШИЙ ПРЕОБРАЗОВАТЕЛЬ РЫЧАГА но я не буду освещать этот аспект в этом уроке, так как в противном случае он окажется слишком длинным. Возможно, в будущем я напишу более обширное руководство, посвященное кодам операций ARM или общему взлому IDA.

Важно всегда следить за тем, чтобы вы не добавляли (или не удаляли) байты из файла .so, поэтому ВСЕГДА заменяйте 4, 8, 16 и т. Д. Байтами на 4, 8, 16 байтов соответственно, иначе сама библиотека сломается. Причина кроется в структуре разделяемых библиотек, которая определяет начало и конец функций в своих заголовках, а добавление или удаление байтов приведет к тому, что все функции будут начинаться / завершаться в разных положениях, что приведет к поломке всей библиотеки.


Теперь, после внесения изменений, просто сохраните нажатием Ctrl + S или нажатием на значок дискеты в верхней части Hxd и перетащите измененный файл libil2cpp.so в файл apk.

Вы заметите, что Hxd также создаст файл libil2cpp.so.bak, который является файлом, который у вас был до его сохранения (который не является резервной копией исходного файла, а всего лишь за шаг до его сохранения). Это по-прежнему удобно, хотя я предпочитаю начинать с нуля, когда все становится слишком сложно (например, редактирование функций 10 +), поскольку это быстрее и проще, поэтому я предложил взять копию файла libil2cpp.so в верхней части этого простого руководства.

Теперь, как всегда, чтобы увидеть, работает ли он, просто отмените файл apk (если у вас нет рутов / исправлений) и установите его.

Если вы ранее модифицировали эту игру, когда она использовала более старую версию Unity (Assembly-Csharp.dll), вам будет намного проще, потому что вы будете знать, какие функции искать и как их редактировать.

Также важно указать, что, в отличие от редактирования dll, этот подход прост только тогда, когда вы полностью заменяете функцию (например, когда вы возвращаете true, false, высокое значение или просто обнуляете его, добавляя только ret). Если вместо этого вы сделали расширенный мод, редактируя строки в середине / конце функции, вы, скорее всего, не справитесь с этим, если только у вас нет хорошего понимания хорошего программного обеспечения под названием IDA (которое может потребоваться в этом случае. так как вам придется изучить всю функцию).

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

Опишем процесс сборки проекта под платформу 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 переписать на смартфон, открыть его на смартфоне и установить приложение. После этого можно начать тестировать свою мобильную игру или приложение на смартфоне.


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

Работа работой, а отдыхать тоже нужно. Человек я не азартный, но карты покидать люблю. Недавно я приметил офлайновое приложение для игры в покер под названием Poker World. У него аскетичный интерфейс, минимальный набор функций, но есть почти все, что мне нужно. Напрягал только повышенный интерес разработчиков к донату. Поэтому с каждой раздачей исследовательская жилка напрягалась и таки не выдержала. Я взялся за клавиатуру с твердым намерением раздобыть себе немного виртуальных деньжат.

Первые шаги

Чтобы начать вивисекцию приложения, нам понадобится небольшой стенд. В первую очередь стоит поставить нормальный эмулятор Android. Раньше я использовал Andy, но теперь он скурвился и даже начал пихать майнеры в свои дистрибутивы. Мне в срочном порядке пришлось искать замену. Моя основная ОС — Windows, и поэтому все поиски были направлены на дистрибутивы для этой платформы. Я перебрал с десяток вариантов из топа выдачи Google, и все они, культурно выражаясь, оставляли желать лучшего. Однако мои молитвы были услышаны, и я наткнулся на MEmu. На момент написания статьи последняя версия была 5.5.1. Тут есть все, что тебе может понадобиться. Создавать можно виртуальные машины Android версий 4.4 и 5.1, а также поддерживается эмуляция нескольких моделей устройств.

Настройки эмулятора MEmu 5.5.1

Настройки эмулятора MEmu 5.5.1

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

Что очень важно, MEmu поддерживает установку приложений из файлов APK и, о боги, в нем есть обычные настройки сетевого подключения Android. Это позволяет легко настроить устройство на работу через прокси типа Burp и перехватывать трафик. Ты удивишься, но часть эмуляторов не поддерживала работу через прокси и не имела стандартных сетевых настроек.

Главный экран эмулятора MEmu после запуска

Главный экран эмулятора MEmu после запуска

В общем, пока у меня не возникало претензий к MEmu. Если ты знаешь о более достойных вариантах, не стесняйся и пиши о них в комментариях.

Еще нам понадобится APK Studio, чтобы иметь возможность удобно распаковывать, пересобирать и подписывать пакеты. Для подписи пакетов к нему потребуется скачать uber-apk-signer и положить в директорию C:\Users\<имя_юзера>\.apkstudio\vendor , предварительно переименовав в uber-apk-signer.jar . Также можешь обновить apktool до последней версии и скопировать в ту же папку.

Главное окно утилиты APK Studio

Главное окно утилиты APK Studio

Переходим по ссылке и скачиваем нашего подопытного. На момент написания статьи последняя версия приложения — 1.3.5.

Теперь можно установить скачанный apk в эмуляторе. Для этого достаточно перетащить его на окно с запущенным MEmu — практически в лучших традициях macOS.

Загрузка игры Poker World 1.3.5 в эмуляторе

Загрузка игры Poker World 1.3.5 в эмуляторе

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

Начинаем веселье в iOS

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

Парочку таких я и обнаружил. В игре есть возможность раз в четыре часа крутить однорукого бандита, из которого тебе рандомно выпадают всякие ништяки. Их в игре всего два вида — это деньги и билеты. И те и другие нужны для участия в турнирах. Так вот в местном аналоге тотализатора можно выиграть небольшое количество денег или один билетик. Количество денег, которые ты можешь срубить, зависит от уровня твоего персонажа. Каждые несколько уровней суммы выигрыша в этой рулетке удваиваются. На самом первом они составляют от 400 до 2000 долларов.

Своеобразный однорукий бандит в Poker World

Своеобразный однорукий бандит в Poker World

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

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

Эволюция спинов в Poker World

Эволюция спинов в Poker World

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

Чтобы бесконечно не переводить время в будущее, можно сделать так:

  • сворачиваем приложение, находясь на экране с таблицей спинов и таймером до следующего;
  • переводим часы на четыре часа вперед;
  • разворачиваем, видим, что появилась кнопка Spin Now. Нажимать ее не нужно;
  • сворачиваем;
  • переводим время на четыре часа назад;
  • снова разворачиваем и теперь уже нажимаем кнопку.

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

Вообще, я сильно удивился тому, какие проблемы может вызвать изменение даты на устройстве с iOS. Например, после того как я выставил 2030, меня разлогинил iCloud и отказывался пускать обратно с неизвестной ошибкой. Я уж было подумал, что мой аккаунт заблокировали за путешествия во времени. Повторно авторизоваться удалось только после перезагрузки девайса.

Два года назад в iOS нашли баг: устройство окирпичивалось, если поставить дату на 1970 год. Можно предположить, что от системной даты многое зависит.

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

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

Эволюция бесплатных игр в Poker World

Эволюция бесплатных игр в Poker World

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

Но это все цветочки. У меня завалялся старый джейлбрейкнутый айфон, а это значит, что настало время заглянуть поглубже в недра игры и посмотреть, что там творится. Запускаю утилиту Filza и смотрю, где располагаются файлы приложения. У меня это /path . Немного покопавшись, я обнаружил интересный файл com.youdagames.pokerworld.plist .

Интересный файл с настройками игры Poker World

Интересный файл с настройками игры Poker World

Сам файловый менеджер Filza позволяет открывать, редактировать и сохранять файлы plist. В нем располагаются разные настройки, которые касаются игры в целом и текущего пользователя в частности. Мой взгляд зацепился за парочку интересных именованных переменных: UserChips и UserTickets . И да, они означают именно то, что ты подумал. Это количество твоих денег (фишек) и билетов. Я поменял значения на нужные и запустил игру.

Редактирование количества денег и билетов у игрока в Poker World
Добавили себе фишек и билетов

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

Продолжение доступно только участникам

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Специалист по информационной безопасности в ONsec. Research, ethical hacking and Photoshop.

Отдельно стоит сказать про систему подписки, поскольку 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 комментариев

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

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

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

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

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

Как создать AR приложение на Android в Unity

Убедитесь, что у вас есть совместимый телефон

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

Загрузите все программное обеспечение

Теперь, перейдем к программному обеспечению, которое нам понадобится. Вот что вам понадобится:

  1. Загрузите Unity 2017.3 (для работы с первой официальной версией ARCore требуется "2017.3" или выше);
  2. Загрузите и установите Android Studio 3.0 или выше, так как это самый простой способ получить установленный Android SDK. И убедитесь, что версия SDK, которую вы выбрали в процессе установки, является Android SDK версии 7.0 (уровень API 24) или выше;
  3. Скачайте "arcore-unity-sdk-v1.0.0.unitypackage.";
  4. Загрузите пример ресурсов arcore-intro.unitypackage;
  5. Наконец, загрузите бесплатную модель рекламного щита от TurboSquid. Когда вам будет предложена эта опция, загрузите версию Collada с расширением "DAE"

Установка Unity

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

Перейдите в то место, где вы загрузили все файлы для этого проекта, и дважды щелкните файл "UnityDownloadAssistant-2017.3".

Двигайтесь вперед в процессе установки, пока не дойдете до окна выбора компонентов. Теперь убедитесь, что выбрана "Unity 2017.3.1f1" (или какая бы версия 2017.3 вы ни устанавливали), а также "поддержка сборки Android."

  • Если вы являетесь частым пользователем Unity, с несколькими установленными различными версиями, вы можете использовать папку, отличающаяся от папки по умолчанию. Кроме того, вы можете использовать имя, отличное от просто "Unity". В любом случае, как только решение будет принято и имя папки будет добавлено в поле папка установки Unity, нажмите кнопку "Далее", и начнется процесс установки.
  • Если вы впервые используете Unity, запустите приложение и создайте новую учетную запись для входа в систему.

Создайте свой проект ARCore

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

  1. Запустите приложение Unity и нажмите на кнопку "Создать". Назовите новый проект ARCore, а затем нажмите кнопку "Создать проект".
  2. Как только откроется главное окно Unity, нажмите Ctrl + Shift + B или нажмите кнопку "Файл", затем "Параметры сборки". Оттуда, нажмите на опцию "Android" под платформой , а затем нажмите на кнопку "Switch Platform". Когда логотип Unity появляется рядом с опцией Android, вы поймете, что он выбран. Нажмите на кнопку "настройки проигрывателя", чтобы продолжить.
  3. На вкладке "основные", под заголовком "другие настройки", нажмите на флажок "многопоточный рендеринг", чтобы убедиться, что он не выбран.
  4. В поле "имя пакета" введите название, которое должно быть уникальным для вашего устройства, так как это может вызвать проблемы, если он имеет то же имя пакета, что и другое приложение.
  5. Теперь нам нужно установить самую низкую совместимую версию ОС Android, которая совместима с ARCore. Найдите опцию «минимальный уровень API», нажмите на его раскрывающееся меню и выберите «Android 7.0 'Nougat'»
  6. Нажмите на кнопку "Настройки XR" внизу окна инспектора. Установите флажок "поддерживается ARCore", чтобы убедиться, что он выбран, а затем закройте эти настройки.

Добавление ARCore SDK & Assets

Наконец, для завершения, нам нужно импортировать наши элементы ARKit в нашу сцену. Дважды нажмите на кнопку «arcore-unity-sdk-v1.0.0.» файл "unitypackage".

Это вызовет окно импорт пакета Unity. Просто нажмите на кнопку "Импорт". Нам не нужно ничего отменять в этом списке, просто оставьте его как есть.

Создайте новую сцену

Нам нужно создать свою сцену, но нам также нужно место, чтобы сохранить ее. Так что давайте создадим папку для нашей сцены. В окне проекта щелкните правой кнопкой мыши на "Активы", затем выберите "Создать", а затем "Папка". Назовите новую папку Scenes.

Далее, нажмите на "File" в строке меню, а затем "Save Scene as". Перейдите в свою недавно созданную папку "сцены". Введите NRARCore (или любое другое имя, которое поможет вам запомнить сцену) в поле Имя файла и нажмите кнопку "Сохранить".

Перенесите ARCore Prefabs в сцену

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

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

В Unity, в окне иерархии, выберите как "основная камера", так и "направленный свет". Щелкните правой кнопкой мыши на них и выберите "Удалить", когда появится меню.

В окне ПРОЕКТА Перейдите в каталог "Prefabs" в разделе «GoogleARCore». "Выберите префабы" устройство «ARCore» и "экологический свет", затем перетащите пару префов из окна проекта в окно иерархии.

Затем нажмите на кнопку Создать в окне иерархии, выберите "пользовательский интерфейс", а затем "система событий."

Чтобы начать эту часть урока, нам необходимо место, чтобы поместить наши файлы сценариев, поэтому мы создадим папку сценариев. В окне проекта, выбрав папку "активы", щелкните правой кнопкой мыши в открытом пространстве и выберите "Создать", а затем "Папка".

Назовите эту папку при появлении соответствующего запроса.

Назовите файл "AppController" и дважды щелкните его, чтобы открыть в нашей интегрированной среде разработки ( IDE ) по выбору.

Код контроллера.

Здесь, в нашем блоке using, в верхней части класса (строка 2), нам нужно добавить строку: использование GoogleARCore;

Это заявление дает нам возможность получить доступ к элементам Google ARCore SDK.

В строке 4 у нас есть объявление класса. Хотя здесь ничего не нужно менять, стоит отметить, что большинство классов Unity будут производными от класса MonoBehaviour. Этот базовый класс - это то, что добавляет большую часть специфической функциональности Unity к любым объектам, которые мы создаем.

Целью метода QuitOnConnectionErrors () является запрос и получение разрешения от устройства и пользователя на доступ к камере. Если по какой-то причине разрешение не может быть дано, приложение будет закрываться.

В методе Update () нам нужно добавить строки 14-20 на изображении ниже.

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

Здесь мы проверяем, действительно ли отслеживается состояние текущего кадра. Если это не так, мы устанавливаем тайм-аут экрана до 15 секунд. Это дает отслеживания некоторое время для восстановления перед завершением работы.

Если TrackingState отслеживает, то sleepTimeout устанавливается в NeverSleep.

Настройка устройства для тестирования

Для того, чтобы получить наш файл пакета Android (или APK-файл) на телефоне и проверить его, нам нужно включить "параметры разработчика". Это меню скрыто по умолчанию, но его можно легко разблокировать, нажав номер сборки в разделе "О телефоне" приложения "Настройки" семь раз подряд. Возможно, вам придется ввести свой PIN-код, для завершения.

В параметрах разработчика убедитесь, что включен параметр "Отладка USB".

Вернитесь на главную страницу меню настроек, выберите пункт Блокировка экрана и безопасность или что-то подобное. Оказавшись внутри этого экрана, выберите "неизвестные источники" и включите эту опцию. Если вы не видите эту опцию, это, вероятно, потому, что вы используете Android Oreo или Android P. В этом случае он попросит вас включить "Неизвестные источники" при попытке установить APK.

После всех необходимых настроек вы можете перейти к тестированию и исправлению недочетов в вашей AR игре на Android.

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