Руководство по разработке совместной упаковки приложения и данных
LCC Unity SDK поддерживает отделение приложения от данных. Однако при фактической разработке приложений иногда необходимо упаковать и опубликовать приложение вместе с данными сцены 3DGS. Этот документ знакомит с подходами совместной упаковки для PC и Android.
Динамическая загрузка данных во время выполнения на PC
SDK загружает данные во время выполнения через метод Load(); указанный путь должен быть абсолютным, например G:\Data\xxx.lcc2.
Для распространения приложения и данных вместе можно объединить путь выполнения приложения с относительным путём данных LCC-сцены в абсолютный путь следующим образом:
- Получите путь выполнения приложения через Unity
Application.dataPath. - Объедините относительный путь данных с путём выполнения в абсолютный путь к данным сцены 3DGS.
Пример кода следующий:
using UnityEngine;
using LCCCore;
using XGrids.LCC;
public class LCCRenderer : MonoBehaviour
{
public LCCManager m_manager;
public string m_FilePath;
private LCCCore.Renderer m_renderer;
void Start()
{
m_renderer = m_manager.GetRender(this.transform);
#if !UNITY_EDITOR
string _dataPath = Application.dataPath;
string _dataPath2 = _dataPath + "/data/meta.lcc2"; // Конкатенируем относительный путь к файлу LCC
m_FilePath = _dataPath2.Replace('/', '\\');
#endif
m_renderer.Load(m_FilePath, onLoadProgress, onLoadCallback);
}
}
Примечание:
- Объединение пути выше обёрнуто в
#if !UNITY_EDITOR: в состоянии редактора Unity используется напрямуюm_FilePath, указанный в Inspector (локальные данные разработки); только в опубликованном времени выполнения объединяется относительный путь в каталоге выполнения приложения.- В сборке PC
Application.dataPathуказывает на папку<AppName>_Dataв каталоге приложения, поэтому относительный путь данных должен соответствовать месту, куда данные будут скопированы позже.- Пути Windows используют обратную косую черту
\; в примере используетсяReplace('/', '\\')для их преобразования.
Копирование данных LCC-сцены в указанный каталог
После обычной сборки проекта Unity и компиляции/публикации приложения сгенерированная структура каталога приложения показана ниже.

Структура каталога приложения, сгенерированная после сборки и публикации Unity
Согласно относительному пути LCC data/meta.lcc2 в коде, необходимо скопировать данные LCC-сцены в соответствующее место в сгенерированном каталоге приложения, как показано ниже.

Копирование данных LCC-сцены в каталог приложения согласно относительному пути
Упаковка всего каталога
Упакуйте весь каталог приложения (сжатие Zip) и распространите его нужным пользователям. После того как пользователь распакует его и запустит Viewer, данные сцены в указанном каталоге могут быть загружены.
Рабочий процесс упаковки Android
Android использует тот же подход, что и PC, но путь к данным требует небольшого изменения: используйте Application.persistentDataPath в качестве корневого каталога данных.
Измените скрипт рендеринга, чтобы объединить путь к данным с persistentDataPath. Обратите внимание, что тип платформы задаётся отдельно через SetPlatformType() (перед GetRender()), а Load() получает только путь и обратные вызовы:
void Start()
{
// Тип платформы должен быть задан перед GetRender()
m_manager.SetPlatformType(PlatformType.Pico);
m_renderer = m_manager.GetRender(this.transform);
m_renderer.Load(
$"{Application.persistentDataPath}/LccData/meta.lcc2",
onLoadProgress,
onLoadCallback);
}
Шаги упаковки и развёртывания:
- Сохраните код и подключите мобильное устройство к компьютеру, где находится проект Unity, с помощью кабеля USB 3.0.
- В строке меню Unity выберите File → Build Settings → Build, чтобы получить APK.
- Скопируйте APK на мобильное устройство и установите его.
- После установки сначала один раз откройте приложение, чтобы система создала каталог для соответствующего имени пакета, затем закройте приложение.
- Создайте папку
LccDataв каталоге для соответствующего имени пакета и скопируйте данные LCC в эту папку (путь обычно — хранилище устройства Android → Android → data → BundleID приложения → Files; конкретный каталог см. в пути установки приложения Android). - Снова откройте приложение, и содержимое LCC будет отображено на телефоне или VR-устройстве.

Создание папки LccData в каталоге имени пакета приложения Android и копирование данных LCC
Примечания
- iOS не поддерживает описанный выше подход динамической загрузки из локального каталога. iOS не позволяет приложению читать все файлы в указанной папке; оно может читать только один указанный файл.
- На mobile и VR рекомендуется размещать данные на сервере и загружать данные с сервера во время выполнения, а не упаковывать данные непосредственно в пакет приложения APK — последнее делает пакет приложения очень большим и раздутым.