XGRIDSДокументация
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • Lixel CyberColor

    • Руководство пользователя LCC Studio

      • Начало работы
      • Версия и обновления
      • Загрузка и установка
      • Обзор интерфейса и навигация
      • Перед реконструкцией
      • Реконструкция модели
      • Реконструкция одиночной модели
      • Объединение карт
      • Воздушно-наземное объединение
      • Воздушная реконструкция
      • Мои модели
      • Другие функции
      • Настройки и учётная запись
      • Конвертер
      • Реконструкция по видео
      • Часто задаваемые вопросы
    • LCC Scene Editor

      • Версия и обновления
      • Учётная запись и вход
      • Обзор продукта и главная страница
      • Интерфейс редактора
      • Режимы навигации по сцене
      • Файл
      • Настройки
      • Операции редактирования
      • Окно
      • Глобальная панель инструментов
      • Ресурсы и свойства
      • Левая панель инструментов
      • Точки обзора
      • Портал
      • Skybox
      • Аннотации
      • Измерение
      • Flythrough
      • Отчёт по сцене
      • 3D Layout
      • Мини-карта
      • Preview Mode (Viewer)
      • Справка
      • Часто задаваемые вопросы
      • Точка появления
    • LCC Model Editor

      • Версия и обновления
      • Руководство пользователя
      • Обзор и интерфейс
      • Операции с файлами
      • Инструменты выбора
      • Редактирование моделей
      • Измерение
      • Цветокоррекция
      • Управление ресурсами
      • Настройки и справка
      • Часто задаваемые вопросы
    • Рекомендации по применению

      • Объединение нескольких крупных моделей 3DGS
  • Plugin & SDK

    • Unreal

      • Введение
      • Быстрый старт — Windows
      • Быстрый старт — Linux
      • Быстрый старт — Quest3
      • Редакции и лицензирование
      • Рендеринг
      • Растеризация Tiled (экспериментально)
      • Визуальные настройки
      • Нормали и освещение
      • Редактирование сцены
      • Параметры производительности
      • Руководство по оптимизации производительности
      • Интеграция со сторонними и движковыми плагинами
      • Прокси-меш
      • Анимация загрузки
      • Коллизии
      • Поддержка системы навигации
      • Поддержка однослойной воды
      • Локализация
      • Частые вопросы
      • Устранение неполадок
      • Журналы и диагностика
      • Свяжитесь с нами
      • Рекомендуемые практики

        • Переосвещение 3DGS с помощью меша LixelStudio
      • Справочник API

        • ALCCActorBase
        • ULCCComponentBase
        • ULCCComponent
        • ULCC2Component
        • Actor SOG / SPZ / PLY
        • ALCC2ProxyMesh
        • ALCCClippingVolume
        • ALCCSectionPlane
        • ALCCLoadVolume
        • ULCCUtilLibrary
        • Enums
        • Structs
      • Журнал изменений

        • v3.4.0
        • v3.3.1
        • v3.0.0
        • v2.2.1
        • v1.0.0
        • v0.9.0
        • v0.8.0
        • v0.7.1
        • v0.6.1
        • v0.5.2
        • v0.4.1
        • v0.4.0
        • v0.3.0
        • v0.0.5
        • v0.0.4
        • v0.0.3
        • v0.0.2
        • v0.0.1
    • Unity

      • Введение в Unity SDK
      • Технические возможности
      • Требования к среде разработки
      • Руководство по быстрому старту для PC
      • Руководство по оптимизации настроек проекта
      • Руководство по разработке для Pico 4 Ultra
      • Руководство по стримингу Pico 4 Ultra с PC
      • Руководство по разработке для Quest 3
      • Руководство по стримингу Quest 3 с PC
      • Руководство по разработке OpenXR
      • Руководство по бизнес-стримингу Pico 4 Ultra
      • Глоссарий
      • FAQ
      • Свяжитесь с нами
      • Руководство по разработке функций

        • Руководство по разработке смешанного рендеринга нескольких сцен
        • Руководство по разработке приёма теней
        • Руководство по разработке освещения в реальном времени
        • Руководство по разработке многокамерного рендеринга
        • Руководство по разработке рендеринга изображений высокого разрешения
        • Руководство по разработке совместимости форматов данных LCC и LCC2
        • Руководство по разработке эффекта загрузки
        • Руководство по разработке переключения режима рендеринга Mip
        • Руководство по разработке привязки к рёбрам и углам
        • Руководство по разработке проецируемых декалей
        • Руководство по разработке видеопроецируемой декали
        • Руководство по разработке подсветки
        • Руководство по разработке обрезки в реальном времени
        • Руководство по разработке коррекции цвета
        • Руководство по разработке получения данных Mesh сцены
        • Руководство по разработке в режиме редактора
        • Руководство по настройке параметров производительности рендеринга
        • Руководство по разработке совместной упаковки приложения и данных
        • Руководство по разработке системы коллизий
        • Руководство по проблемам с разрешениями при разработке на macOS
        • Руководство по разработке компиляции и упаковки для устройств iOS
      • Справочник по API

        • LCCManager
        • Renderer
        • Типы данных
      • Журнал изменений

        • v2.3.0
        • v2.2.10
        • v2.2.0
        • v2.1.19
        • v2.0.14

Руководство по разработке компиляции и упаковки для устройств iOS

Предыстория

LCC Unity SDK публикуется в виде предварительно скомпилированных DLL. Поскольку платформа iOS требует связывания нативных плагинов как статических библиотек (__Internal), а не динамической загрузки (dlopen), перед сборкой приложения iOS необходимо выполнить дополнительные шаги настройки, описанные в этом документе. Между iOS и другими платформами существует фундаментальное различие в механизмах загрузки нативных плагинов; другие платформы (Windows, macOS, Android, Linux) не требуют дополнительных операций.

Этот SDK использует "libwebp" в качестве цели P/Invoke при компиляции в DLL. Встроенный скрипт SDK Editor/RewriteWebpDllImport.cs автоматически переписывает его в "__Internal" при сборках iOS, гарантируя, что IL2CPP генерирует правильные прямые вызовы символов.

Примечание:

При компиляции приложения для устройства iOS сначала переименуйте Editor/RewriteWebpDllImport.txt в пакете SDK в Editor/RewriteWebpDllImport.cs, чтобы скрипт вступил в силу. Либо напрямую измените суффикс скрипта в пакете SDK и скопируйте его в каталог Assets/Editor/ проекта.

Предварительные условия

Скрипт RewriteWebpDllImport.cs использует библиотеку перезаписи IL Mono.Cecil во время сборки, поэтому сначала необходимо добавить её в проект как зависимость. Есть два способа; выберите любой.

Метод 1: Добавить через Package Manager (рекомендуется)

Откройте строку меню Unity Window → Package Manager, нажмите кнопку + в верхнем левом углу, выберите Add package by name..., введите имя com.unity.nuget.mono-cecil, введите версию 1.11.5, нажмите Add и дождитесь завершения установки в Package Manager, как показано ниже.

Добавление зависимости Mono.Cecil по имени в Package Manager

Добавление com.unity.nuget.mono-cecil по имени в Package Manager

Метод 2: Вручную отредактируйте manifest.json

Напрямую отредактируйте файл проекта Packages/manifest.json и добавьте строку в раздел dependencies:

{
  "dependencies": {
    "com.unity.nuget.mono-cecil": "1.11.5"
  }
}

После сохранения переключитесь обратно в Unity; редактор автоматически разрешит и установит зависимость.

Рабочий процесс сборки

После завершения предварительной настройки следуйте стандартному рабочему процессу сборки iOS; RewriteWebpDllImport вмешается автоматически во время сборки.

  1. Переименуйте Editor/RewriteWebpDllImport.txt в Editor/RewriteWebpDllImport.cs (если ещё не переименован).
  2. В строке меню Unity выберите File → Build Settings, выберите iOS из списка платформ и нажмите Switch Platform.
  3. Нажмите Build (или Build And Run), выберите выходной каталог и сгенерируйте проект Xcode.
  4. Во время сборки скрипт автоматически переписывает все записи DllImport в SDK, нацеленные на "libwebp", в "__Internal". После успешной сборки Console выводит журнал, похожий на:
[RewriteWebpDllImport] Rewrote 77 P/Invoke entries from "libwebp" to "__Internal".
  1. Откройте сгенерированный проект в Xcode и в разделе Build Phases → Link Binary With Libraries цели подтвердите, что связаны libwebp.a, libwebpdemux.a и libsharpyuv.a.
  2. Подключите устройство iOS, подпишите и запустите в Xcode.

Примечание:

Если журнал [RewriteWebpDllImport] не появляется в Console, это обычно означает, что скрипт не вступил в силу — подтвердите, что суффикс файла изменён с .txt на .cs и что зависимость Mono.Cecil установлена правильно.

Устранение неполадок

Сообщение об ошибкеПричинаРешение
Unable to load DLL 'libwebp'Скрипт не вступил в силу, и DllImport всё ещё указывает на имя динамической библиотекиПодтвердите, что RewriteWebpDllImport.txt переименован в .cs, пересоберите и проверьте журнал Console
Cannot find LCCSDK.dll in staging areaОсновная DLL SDK не найдена во время сборки, цель перезаписи отсутствуетПодтвердите, что SDK правильно импортирован в проект и DLL не исключена из iOS через Exclude Platform
Ошибки компиляции, связанные с Mono.Cecil (не удаётся найти пространство имён Mono.Cecil)Не установлено или несовпадение версииДобавьте com.unity.nuget.mono-cecil@1.11.5 согласно разделу «Предварительные условия» и дождитесь повторного разрешения компилятором

Примечания

  • Рекомендуется использовать Unity 2022.3 LTS или выше (включая Unity 6); совместимость с Mono.Cecil и IL2CPP на слишком старых версиях не гарантируется.
  • Если нужно запускать на iOS Simulator, подтвердите, что связанная статическая библиотека содержит архитектурный срез arm64-simulator, иначе симулятор не сможет выполнить связывание.
  • Вышеуказанная конфигурация влияет только на платформу iOS. Рабочие процессы сборки Windows, macOS, Android и Linux совершенно не затрагиваются, и нет необходимости переименовывать скрипт или добавлять зависимость Mono.Cecil.