Экспорт проекта для visionOS
Нативный маршрут Xcode, роли приложения, иконка, трекинг и ограничения C#/симулятора.
Проверьте поддержку проекта
В исходниках Reckfell 1.0.0 предусмотрен нативный экспортёр visionOS. Текущий C#-экспортёр не реализует этот target. Наличие пункта visionOS или справочника VisionOSXRInterface не подтверждает экспорт C#-игры. Замена имени iOS в пресете или включение .NET-модуля не добавляет отсутствующий путь публикации.
Для нативного маршрута нужны Mac, полная установка Xcode с visionOS SDK, соответствующий архив шаблонов visionos.zip, Team для подписи и доступ к целевому устройству. Собственные шаблоны задаются через custom_template/debug и custom_template/release. Редактор, шаблоны и модули должны соответствовать вашей сборке; сборка шаблонов visionOS — отдельная задача.
Текущий пресет задаёт application/min_visionos_version=26.0; в конфигурации сборки используются target-версии xros26.0. Уменьшение числа в пресете не пересобирает бинарники под старую ОС. Архитектура экспорта — arm64; device и simulator остаются разными платформами даже при одинаковой архитектуре.
Выберите режим приложения
| Поле | Значения | Назначение |
|---|---|---|
application/app_role | Window=0, Immersive=1 | Window по умолчанию показывает приложение в окне. Immersive выбирает отдельный пространственный маршрут. |
application/immersion_style | Full=0, Mixed=1, Progressive=2 | Начальный стиль для Immersive; по умолчанию Mixed. Для Window эта настройка не создаёт immersive-пространство. |
Mixed сохраняет видимость окружения, Full заменяет его виртуальным содержимым, Progressive использует управляемую область погружения. Это режим композиции с окружением, а не уровень качества рендера. Не сводите пространство к фиксированному радиусу игрового мира: ограничения перемещения задаёт платформа. Стили погружения Apple.
Для Immersive нужна XR-иерархия с XROrigin3D/XRCamera3D, активный интерфейс visionOS и настройки viewport. Одного значения в пресете недостаточно. Драйвер Metal и Mobile-рендерер, трекинг, глубина и прозрачность разобраны в XR на visionOS. Это нативная интеграция Compositor Services, не настройка OpenXR.
Экспортируйте проект Xcode
- Добавьте пресет visionOS. Укажите
application/app_store_team_idкак Team ID и стабильныйapplication/bundle_identifier, соответствующий подписи. - Выберите роль и начальный стиль. Для первого запуска включите
application/export_project_only, чтобы отдельно диагностировать генерацию проекта и сборку Xcode. - Создайте отдельный каталог вывода вне исходного проекта. Экспортируйте под простым именем, например
Game. Повторный экспорт может очистить генерируемые каталоги; ручные изменения Xcode сохраняйте отдельно. - Откройте
Game.xcodeproj, оставив рядом.pck, XCFramework и созданные каталоги приложения. В Xcode выберите схему, Team и реальное целевое устройство. Завершите настройку pairing/Developer Mode по инструкции запуска Apple. - Выполните Product > Run и проверьте реальное отображение и ввод. Создание
.xcodeprojне подтверждает успешную сборку или запуск.
На целевом Mac сначала проверьте доступность SDK:
xcode-select -p
xcrun --sdk xros --show-sdk-path
xcrun --sdk xrsimulator --show-sdk-pathЭто диагностические команды, не сборка приложения. Если нужен встроенный маршрут архивирования, выключите application/export_project_only: общий экспортёр вызывает xcodebuild archive, затем экспорт пакета с заданной конфигурацией подписи. Разделение проекта, архива и пакета описано в экспорте iOS; требования рендера и C# оттуда на visionOS не переносятся.
Иконка и разрешения
Подготовьте три слоя 1024×1024: icons/icon_front_layer_1024x1024, icons/icon_middle_layer_1024x1024, icons/icon_back_layer_1024x1024. Экспортёр создаёт AppIcon.solidimagestack. Неверный размер автоматически масштабируется, но качество исходника от этого не растёт. Без заданных слоёв front берётся из общей иконки, а отсутствующие middle/back становятся непрозрачно-чёрными заглушками. Проверьте готовую иконку в Xcode, а не только отдельные картинки.
Включайте xr/visionos/enable_hand_tracking или xr/visionos/enable_controller_tracking только при необходимости. Для них заполните соответственно privacy/hand_tracking_usage_description и privacy/accessory_tracking_usage_description; в plist это NSHandsTrackingUsageDescription и NSAccessoryTrackingUsageDescription. Наличие текста или tracker не означает разрешение пользователя и валидные данные. Предусмотрите управление при отказе.
Что считать результатом
Для Immersive проверьте на устройстве стереоизображение, правильный масштаб, положение камеры, видимость окружения в Mixed, ввод и возврат после прерывания. Отдельно проверьте сохранения в user://. Для релиза повторите проверку release-пакета с нужной подписью и способом распространения.
Ограничение симулятора в текущем коде: visionOS отключает Vulkan и OpenGL; сборка Simulator дополнительно отключает Metal. Поэтому успешная генерация проекта или сборка библиотеки симулятора не доказывает наличие рабочего графического драйвера. Рецепт «переключить на Compatibility», применимый к некоторым iOS-шаблонам, здесь не подходит.
Граница проверки: статья сверена с нативным экспортёром, Swift-слоем, конфигурацией сборки и списком target C#-плагина. На текущем Windows-хосте не выполнялись экспорт visionOS, Xcode, подпись, запуск, трекинг или графическая проверка. Эти результаты ещё нужно получить для вашей сборки; исходники движка не менялись.