Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Интеграция Unity в нативные приложения iOS

На этой странице описывается, как интегрировать библиотеку времени выполнения Unity в iOSмобильную операционную систему Apple. Подробнее
См. в Словарь
собственные приложения с функцией Unity как библиотека.

Эту функцию можно использовать для включения функций Unity, таких как 3D/2D-рендеринг в реальном времени, ARAugmented Reality (AR) использует компьютерную графику или видео, наложенное поверх прямой видеотрансляции, чтобы дополнить представление и создать взаимодействие с реальными и виртуальными объектами.
См. в Словарь
Опыт взаимодействия с 3D-моделями или 2D-мини-игры в ваше родное приложение. Библиотека среды выполнения Unity предоставляет элементы управления для управления тем, когда и как загружать, активировать и выгружать контент в вашем родном приложении.

Как это работает

Чтобы использовать Unity в качестве библиотеки для iOS, сначала создайте свой проект Xcode, как обычно, из Unity (дополнительную информацию см. в разделе Настройки сборки для iOS).

Каждый проект Unity iOS Xcode имеет следующую структуру:

  • Часть библиотеки в целевом объекте UnityFramework, которая включает исходный код, подключаемые модулинабор кода, созданного вне Unity, который создает функциональность в Unity. В Unity можно использовать два типа подключаемых модулей: управляемые подключаемые модули (управляемые сборки .NET, созданные с помощью таких инструментов, как Visual Studio) и собственные подключаемые модули (библиотеки собственного кода для конкретной платформы). Подробнее
    См. в Словаре
    и зависимых платформах. Он также создает файл UnityFramework.framework.
  • Тонкая часть средства запуска в целевом объекте Unity-iPhone , которая включает данные представления приложения и запускает библиотеку. Цель Unity-iPhone имеет одну зависимостьВ контексте диспетчера пакетов зависимость конкретная версия пакета (выраженная в форме имя_пакета@версия_пакета), которая требуется проекту или другому пакету для работы. Проекты и пакеты используют атрибут dependencies в своих манифестах для определения набора требуемых пакетов. Для проектов это считается прямой зависимостью; для пакетов это косвенные или транзитивные зависимости. Подробнее
    См. в Словаре
    цель UnityFramework.

Чтобы интегрировать Unity в другой проект Xcode, необходимо объединить оба проекта Xcode (собственный и созданный Unity) в одну рабочую область Xcode и добавить файл UnityFramework.framework в Раздел Встроенные двоичные файлы цели Приложение для собственного проекта Xcode. После этого вы можете использовать класс UnityFramework для управления средой выполнения Unity.

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

Класс UnityFramework

Вы можете управлять средой выполнения Unity с помощью экземпляра класса UnityFramework Objective-C, который является основным классом UnityFramework.framework:< /p>

Метод Описание
+ (UnityFramework*)getInstance; Метод класса Singleton, который возвращает экземпляр в UnityFramework.
- (UnityAppController*)appController; Возвращает подкласс UnityAppController класса UIApplicationDelegate. Это корневой класс Unity на собственной стороне, и он может обращаться к объектам приложения, связанным с представлением, таким как UIView, UIViewControllers. , CADisplayLink или DisplayConnection.
- (void)setDataBundleId:(const char*)bundleId; Задает пакет, в котором среда выполнения Unity должна искать папку Data. Дополнительные сведения см. в документации по папке данных. Вызовите этот метод перед вызовом runUIApplicationMainWithArgc или runEmbeddedWithArgc.
- (void)runUIApplicationMainWithArgc:(int)argc argv:(char*[])argv; Способ по умолчанию для запуска Unity из основного метода, где нет других представлений.
- (void)runEmbeddedWithArgc:(int)argc argv:(char*[])argv appLaunchOpts:(NSDictionary*)appLaunchOpts; Вызывайте этот метод, когда вам нужно запустить Unity, когда существуют другие представления.
- (void)unloadApplication; Вызовите это, чтобы выгрузить Unity и получить обратный вызов UnityFrameworkListener после завершения выгрузки. Unity освободит большую часть занимаемой памяти, но не всю. Вы сможете снова запустить Unity.
- (void)registerFrameworkListener:(id)obj; Зарегистрируйте объект прослушивателя, который получает обратные вызовы событий, связанных с жизненным циклом UnityFramework.
- (void)unregisterFrameworkListener:(id)obj; Отменить регистрацию объекта прослушивателя.
- (void)showUnityWindow; Вызовите этот метод во время отображения представления, отличного от Unity, чтобы также отобразить представление Unity, которое уже запущено.
- (void)pause:(bool)pause; Пауза единства.
- (void)setExecuteHeader:(const MachHeader*)header; Вы должны вызвать это перед запуском Unity, чтобы CrashReporter работал правильно.
- (void)sendMessageToGOWithName:(const char*)goName functionName:(const char*)name message:(const char*)msg; Этот метод является прокси для UnitySendMessage. Он находит игровой объект по имени и вызывает functionName с однострочным параметром сообщения.
(void)quitApplication:(int)exitCode; Вызовите это, чтобы полностью выгрузить Unity и получить обратный вызов UnityFrameworkListener при завершении работы Unity. Unity освободит всю память.

Примечание. После этого вызова вы не сможете снова запустить Unity в том же процессе. Вы можете установить quitHandler в AppController, чтобы переопределить уничтожение процесса по умолчанию.

Ограничения

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

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

  • Unity как библиотека для iOS добавлена в 2019.3
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3