アプリケーションとデータの同梱パッケージ開発ガイド
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 の Editor 状態 では、Inspector で指定したm_FilePath(ローカル開発データ)が直接使用され、公開済みランタイム のみアプリケーション実行ディレクトリ下の相対パスが連結されます。- 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);
}
パッケージ化とデプロイの手順:
- コードを保存し、USB 3.0 ケーブルでモバイルデバイスを Unity プロジェクトのある PC に接続します。
- Unity メニューバーで File → Build Settings → Build を選択して APK を取得します。
- APK をモバイルデバイスにコピーしてインストールします。
- インストール後、まずアプリを 1 回開いて システムに対応するパッケージ名のディレクトリを作成させ、その後アプリを閉じます。
- 対応するパッケージ名のディレクトリ下に
LccDataフォルダを作成し、LCC データをそのフォルダにコピーします(パスは一般的に Android デバイスのストレージ → Android → data → アプリ BundleID → Files。具体的なディレクトリは Android アプリのインストールパスを参照)。 - アプリを再度開くと、スマートフォンや VR デバイスに LCC コンテンツが表示されます。

Android アプリのパッケージ名ディレクトリ下に LccData フォルダを作成し LCC データをコピー
注意事項
- iOS は 上記のローカルディレクトリ動的読み込み手法に対応していません。iOS はアプリが指定フォルダ下のすべてのファイルを読み取ることを許可せず、指定した単一ファイルのみ読み取れます。
- モバイルと VR では、データを APK アプリケーションパッケージに直接パッケージ化するのではなく、サーバーに配置して実行時にサーバーから取得することを推奨します。後者はアプリケーションパッケージが非常に大きく肥大化するためです。