Unity 6.3
0 онлайн 3 гостей 3 в системе
Вход

Структура проекта Unity Xcode

Когда вы создаете проект Unity для платформы iOS, Unity создает папку, содержащую проект Xcode. Вы должны создать и подписать этот проект, прежде чем развернуть его на устройстве или распространить его в App Store.

Примечание: Вы можете изменить созданный проект Xcode, используя Xcode.PBXProject.

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

Unity iOS Структура проекта Xcode
Unity iOS Структура проекта Xcode

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

Цели Project

  • Unity-iPhone: Тонкая часть запуска, которая запускает UnityFramework. Она включает папку MainApp и данные представления приложения, такие как экраны запуска, .xib файлы, значки, данные и Info.plist файлы. Цель Unity-iPhone имеет одну зависимость от цели UnityFramework.
  • UnityFramework: Цель, которая создает пакет UnityFramework.framework. Он включает время выполнения Unity, папки Classes, UnityFrameworkи Libraries, а также зависимые фреймворки. Папка UnityFramework содержит файл манифеста конфиденциальности (PrivacyInfo.xcprivacy), сводный файл манифеста конфиденциальности для времени выполнения Unity, плагины Unity, пакеты и ваш проект.
  • GameAssembly: Контейнер для вашего кода C#, переведенного в код C++. Для сборки Xcode использует инструмент IL2CPP, который Unity включает в каждый генерируемый проект Xcode. Сборка производит:
    • libGameAssembly.a: статическая библиотека, содержащая весь управляемый код проекта, кросс-скомпилированный в C++ и собранный для iOS.
    • il2cpp.a: статическая библиотека, содержащая IL2CPP код времени выполнения для поддержки управляемого кода.

Примечание: Используйте PBXProject.GetUnityFrameworkTargetGuid() для получения UnityFramework целевой GUID и PBXProject.GetUnityMainTargetGuid() для получения Unity-iPhone целевой GUID.

Папка «Классы»

Папка Classes содержит код, который интегрирует время выполнения Unity и Objective-C. Unity хранит точки входа приложения в файлах main.mm и UnityAppController.mm/h внутри этой папки. Вы можете создать свой собственный AppDelegate, полученный из UnityAppController, или, если любой из ваших плагинов включает AppController.h, вы можете включить вместо этого UnityAppController.h. Если ваша папка Plugins/iOS включает AppController.mm/h, вы можете объединить и переименовать их.

InternalProfiler.h файл задаёт условную директиву компилятора, включающую внутренний профайлер. Код в этой папке меняется нечасто, и сюда можно помещать собственные классы. Если вы выберете Режим добавления, Xcode сохраняет изменения в этой папке между сборками. Однако, эта функция не поддерживает несколько целей сборки и требует фиксированной структуры Libraries папка.

Внутренний профайлер Unity работает быстро и незаметно и выдаёт базовые сведения о:

  • Какая подсистема занимает наибольшую часть времени кадра.
  • Размер кучи .NET.
  • GC количество и продолжительность событий.

Папки данных

Эта папка содержит серийные ассеты вашего приложения и сборки .NET (файлы.dll или .dat) как полный код или метаданные, в зависимости от настроек удаления кода. Файл machine.config устанавливает различные услуги .NET, такие как безопасность и WebRequest. Xcode обновляет содержимое этой папки при каждой сборке. Вы не должны вносить в нее никаких изменений.

По умолчанию, Data папки Целевой членский состав является Unity-iPhone целевой показатель, и Unity время выполнения ищет его в mainBundleЧтобы изменить пакет по умолчанию, где Unity время выполнения ищет Data папка, вызов setDataBundleId: "com.my.product" по вопросу UnityFramework Например, если вы хотите, чтобы в вашем приложении была доступна только одна функция, Data совместно с UnityFramework вызов, использование setDataBundleId: "com.unity3d.framework" и установить Целевой членский состав до UnityFramework.

Папку данных с параметром Целевое членство, установленным на UnityFramework.
Папку данных с параметром Целевое членство, установленным на UnityFramework.

Обратите внимание: Ресурсы по запросу поддерживаются только в том случае, если папка Data является частью цели Приложения, а не частью цели UnityFramework.

Папка библиотек

Libraries папка содержит libil2cpp.a для IL2CPP. libiPhone-lib.a файл — это статическая библиотека среды выполнения Unity, а RegisterMonoModules.cpp связывает Unity нативный код с .NET. Xcode обновляет содержимое этой папки с каждой сборкой. Вы не должны делать никаких изменений в ней.

Графические файлы

Значки и стартовые экраны ( файлы.png) находятся в каталогах ассетов в папке Unity-iPhone. Unity автоматически управляет этими файлами. Экраны запуска, их XML Interface Builders ( файлы.xib) и файлы Storyboard хранятся в корневой папке проекта. Вы можете настроить эти файлы в окне Настройки Игрока (меню: Изменить > Project Настройки > Настройки Игрока). Убедитесь, что пользовательские образы запуска, которые вы создаете, соответствуют Apple Human Interface Guidelines.

Файл списка свойств (.plist)

Файлом Info.plist в целевом объекте Unity-iPhone, доступ к которому выполняется через mainBundle, можно управлять из окна Настройки Игрока редактора Unity: Изменить > Project Настройки > Настройки Игрока > Другие настройки > Идентификация. При сборке Player Unity обновляет этот файл, а не заменяет его. Не изменяйте файл без необходимости.

Файл /UnityFramework/Info.plist, доступ к которому осуществляется через bundleWithIdentifier:@"com.unity3d.framework", является частью UnityFramework. Вы можете хранить значения в этом файле вместо файла Info.plist из mainBundle. Это гарантирует, что вы все еще сможете получить эти значения, если UnityFramework будет перемещен в другое приложение, например, при использовании Unity в качестве Библиотеки.

Дополнительные ресурсы