Ontwikkelgids voor het samen verpakken van de applicatie en de gegevens
De LCC Unity SDK ondersteunt het scheiden van de applicatie en de gegevens. Bij de daadwerkelijke applicatieontwikkeling moet je echter soms de applicatie samen met de 3DGS-scènegegevens verpakken en publiceren. Dit document behandelt de benaderingen voor het samen verpakken voor pc en Android.
Dynamisch laden van gegevens tijdens runtime op pc
De SDK laadt gegevens tijdens runtime via de Load()-methode; het opgegeven pad moet een absoluut pad zijn, bijvoorbeeld G:\Data\xxx.lcc2.
Om de applicatie en de gegevens samen te distribueren, kun je het uitvoeringspad van de applicatie samenvoegen met het relatieve pad van de LCC-scènegegevens tot een absoluut pad, als volgt:
- Haal het uitvoeringspad van de applicatie op via
Application.dataPathvan Unity. - Voeg het relatieve gegevenspad samen met het uitvoeringspad tot het absolute pad van de 3DGS-scènegegevens.
Het codevoorbeeld is als volgt:
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"; // Voeg het relatieve pad van het LCC-bestand samen
m_FilePath = _dataPath2.Replace('/', '\\');
#endif
m_renderer.Load(m_FilePath, onLoadProgress, onLoadCallback);
}
}
Opmerking:
- De bovenstaande padsamenvoeging is verpakt met
#if !UNITY_EDITOR: in de Unity-Editor-status wordt het in de Inspector opgegevenm_FilePath(lokale ontwikkelgegevens) rechtstreeks gebruikt; alleen in de gepubliceerde runtime wordt het relatieve pad onder de uitvoeringsmap van de applicatie samengevoegd.- In een pc-build verwijst
Application.dataPathnaar de map<AppName>_Dataonder de applicatiemap, dus het relatieve gegevenspad moet overeenkomen met de locatie waar de gegevens later naartoe worden gekopieerd.- Windows-paden gebruiken backslashes
\; het voorbeeld gebruiktReplace('/', '\\')om deze om te zetten.
LCC-scènegegevens naar een opgegeven map kopiëren
Nadat je het Unity-project normaal hebt gebouwd en de applicatie hebt gecompileerd/gepubliceerd, wordt de gegenereerde mapstructuur van de applicatie hieronder weergegeven.

Mapstructuur van de applicatie die wordt gegenereerd na het bouwen en publiceren in Unity
Volgens het LCC-relatieve pad data/meta.lcc2 in de code moet je de LCC-scènegegevens naar de overeenkomstige locatie onder de gegenereerde map van de applicatie kopiëren, zoals hieronder wordt weergegeven.

Kopieer de LCC-scènegegevens volgens het relatieve pad naar de applicatiemap
De volledige map verpakken
Verpak de volledige applicatiemap (Zip-compressie) en distribueer deze naar de gebruikers die deze nodig hebben. Nadat de gebruiker deze heeft uitgepakt en de Viewer heeft uitgevoerd, kunnen de scènegegevens in de opgegeven map worden geladen.
Android-verpakkingsworkflow
Android gebruikt dezelfde benadering als pc, maar het gegevenspad heeft een kleine aanpassing nodig: gebruik Application.persistentDataPath als de hoofdmap van de gegevens.
Pas het renderingscript aan om het gegevenspad samen te voegen met persistentDataPath. Let erop dat het platformtype apart wordt ingesteld via SetPlatformType() (vóór GetRender()) en dat Load() alleen het pad en de callbacks ontvangt:
void Start()
{
// Het platformtype moet vóór GetRender() worden ingesteld
m_manager.SetPlatformType(PlatformType.Pico);
m_renderer = m_manager.GetRender(this.transform);
m_renderer.Load(
$"{Application.persistentDataPath}/LccData/meta.lcc2",
onLoadProgress,
onLoadCallback);
}
Verpakkings- en implementatiestappen:
- Sla de code op en verbind het mobiele apparaat met een USB 3.0-kabel met de computer waarop het Unity-project staat.
- Selecteer in de Unity-menubalk Bestand → Buildinstellingen → Build om de APK te verkrijgen.
- Kopieer de APK naar het mobiele apparaat en installeer deze.
- Na de installatie open je de app eerst één keer zodat het systeem de map voor de betreffende pakketnaam aanmaakt; sluit de app daarna.
- Maak een
LccData-map aan onder de map voor de betreffende pakketnaam en kopieer de LCC-gegevens naar die map (het pad is over het algemeen Android-apparaatopslag → Android → data → app-BundleID → Files; raadpleeg het installatiepad van de Android-app voor de specifieke map). - Open de app opnieuw, waarna de LCC-inhoud op de telefoon of het VR-apparaat wordt weergegeven.

Maak een LccData-map aan onder de pakketnaammap van de Android-app en kopieer de gegevens erin
Opmerkingen
- iOS ondersteunt de bovenstaande benadering van dynamisch laden uit een lokale map niet. iOS staat een applicatie niet toe om alle bestanden onder een opgegeven map te lezen; het kan alleen één specifiek bestand lezen.
- Op mobiel en VR wordt aanbevolen om de gegevens op een server te plaatsen en de gegevens tijdens runtime van de server op te halen, in plaats van de gegevens rechtstreeks in het APK-applicatiepakket te verpakken — dit laatste maakt het applicatiepakket erg groot en opgeblazen.