以下の内容はhttps://bluebirdofoz.hatenablog.com/entry/2026/02/13/232759より取得しました。


LCCUnitySDKを使ってQuest3でLCCモデルを表示する その7(Documentsフォルダを参照する)

本日はQuest3の小ネタ枠です。
LCC Unity SDKを使ってQuest3でLCCモデルを表示する方法です。

前回記事

以下の記事で作成したUnityプロジェクトを基に設定を行います。
記事その1~その6までの作業を実施済みであることが前提になります。
bluebirdofoz.hatenablog.com

今回はドキュメントフォルダ内に置いたLCCファイルを参照できるようにします。

Documentsフォルダにアクセスする

QuestのDocumentsフォルダにアクセスするには以下の作業が必要になります。

  • AndroidManifestにMANAGE_EXTERNAL_STORAGE権限を付与する
  • アクセス権限の許可を取得する
  • /sdcard/Documents/フォルダにアクセスする

AndroidManifest.xmlへの権限設定

初めにAndroidManifestの設定を有効化します。
[Edit -> Project Settings..]を開き、[Player]タブの[Publishing Settings]パネルを開きます。

[Build -> Custom Main Manifest]のチェックを入れます。
これで編集可能なAndroidManifestが生成されます。

プロジェクトのアセットフォルダにあるAndroidManifest.xmlを開きます。

Assets/Plugins/Android/AndroidManifest.xml

AndroidManifest.xmlに以下の機能権限を追加します。

<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>


フォルダアクセスの許可を求める

Documentsフォルダにアクセスするにはアプリ内でフォルダアクセスの許可を得る必要があります。
以下のコードを実行するとアプリ内でアクセス許可のダイアログが表示されます。

    /// <summary>
    /// ユーザにフォルダアクセスの許可を求める
    /// </summary>
    private void AskForManageStoragePermission()
    {
        try
        {
            using var unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            using AndroidJavaObject currentActivityObject = unityClass.GetStatic<AndroidJavaObject>("currentActivity");
            string packageName = currentActivityObject.Call<string>("getPackageName");
            using var uriClass = new AndroidJavaClass("android.net.Uri");
            using AndroidJavaObject uriObject =
                uriClass.CallStatic<AndroidJavaObject>("fromParts", "package", packageName, null);
            using var intentObject = new AndroidJavaObject("android.content.Intent",
                "android.settings.MANAGE_APP_ALL_FILES_ACCESS_PERMISSION", uriObject);
            intentObject.Call<AndroidJavaObject>("addCategory", "android.intent.category.DEFAULT");
            currentActivityObject.Call("startActivity", intentObject);
        }
        catch (AndroidJavaException e)
        {
            m_FolderPermissionOverride = true;
            Debug.LogError("Java Exception caught and ignored: " + e.Message);
            Debug.LogError("Assuming this means we don't need android.settings.MANAGE_APP_ALL_FILES_ACCESS_PERMISSION (e.g., Android SDK < 30)");
        }
    }

フォルダアクセスの許可が得られれば以下のフォルダパスでDocumentsフォルダにアクセスできます。

/sdcard/Documents/

スクリプトを改変する

前回記事で作成したLCCRendererを以下の通りドキュメントフォルダを参照する形に修正しました。
・LCCRenderer.cs


クリックで展開

これでプロジェクトの変更は完了です。

Quest3へのデプロイとサンプルモデルのダウンロード

Quest3へのデプロイとサンプルモデルのダウンロード手順については以下の記事を参照ください。
bluebirdofoz.hatenablog.com

ドキュメントフォルダを参照する場合のファイルの配置箇所について以下に記述します。

Editor上での動作確認

一時フォルダからドキュメントフォルダにLCCフォルダを移動します。

C:\Users\(ユーザ名)\Documents\LCC

シーンを再生してLCCモデルが表示されることを確認します。

Quest3上の動作確認

Quest3のドキュメントフォルダにLCCファイルをアップロードします。
Quest3をPCにUSB接続してストレージを開き、以下のフォルダにLCCファイル内の全ファイルをコピーします。

/Documents/LCC

アプリを起動すると、以下の通りLCCモデルが描画されました。

ただし筆者環境では画面の右半分のみモデルの解像度が下がっているように表示される事象を確認しました。
本事象については現状、原因と解決策は不明です。




以上の内容はhttps://bluebirdofoz.hatenablog.com/entry/2026/02/13/232759より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14