CRIWARE Unity Plugin Manual
Last Updated: 2024-12-05
WebGL版ファイルマジックPRO
概要
この章はWebGLターゲット向けのファイルマジックPROについて解説します。
制限事項
CriFsWebInstallerは使用することができます。
CriFsInstallerは動作しません。
各ファイルシステムの仕様
以下のファイルシステムにアクセスできます。
ファイルパスをADX/Sofdec/FileMajikProのロード関連のAPIに指定したとき、
そのパスに対応するファイルシステムへファイル取得の処理を行います。
リモートファイルシステム
"http://", "https://" から始まるURLのパスの場合、
fetch Applicationを使ってリモートサーバーにリクエストを送り、
ファイルの取得を行います。
WebGLターゲットではStreamingAssetsはリモートサーバー上のディレクトリで、
Application.streamingAssetsPath はURLを返します。
アクセス速度はネットワークの通信状況に影響され、
ロード中に回線が途切れたりタイムアウトした場合エラーが発生します。
一度読み込みに成功したファイルは IndexedDB を使用して独自にキャッシングし、ページが再読み込みされるまではキャッシュから読み込まれます。
また、CORS(Cross-Origin Resource Sharing) の制約があります。
→
リソースのロードに失敗する (CORS)
メモリファイルシステム
"/"から始まるパスから始まる場合、Emscriptenの標準ファイルシステムにアクセスを行います。
ここにはUnityのFileクラス等でアクセスすることができます。
Application.temporaryCachePath は /tmp を返します。
メモリファイルシステムはアクセススピードは高速ですが、ファイルを書込んだ分だけメモリを消費します。
揮発性ストレージのため、Webページの再読み込みを行うとリセットされます。
IndexedDBファイルシステム
IndexedDBを使用したファイルシステムで、不揮発性ストレージにバックアップされます。
/idbfs にマウントされており、メモリファイルシステムと同じようにアクセスすることができます。
Application.persistentDataPath は /idbfs を返します。
あくまでメモリファイルシステムにバックアップ機能が付いたものであり、
ファイルを書込んだ分だけメモリを消費します。
Fileクラス等で書き込んだ場合、不揮発性ストレージと同期させるため WebGL NativePlugin で FS.syncfs()を呼び出す必要があります。
保存できる容量はブラウザによって差異があり、ブラウザの設定でIndexedDBが無効にされていたり、
書込む際の確認で許可されなかった時はエラーが発生します。
Unity WebGLのゲームを起動するとIndexedDBに保存されている全てのファイルがメモリにロードされるため、
ファイル数が増えるとメモリを圧迫したり起動時間に影響することがあります。
また同一ホストではidbfsが共有されるため、別のゲームのファイルが悪影響を及ぼす可能性もあります。
備考: WWW.LoadFromCacheOrDownload() を使用すると /idbfs 以下に書き込まれるようです。
Copyright (c) CRI Middleware Co., Ltd. 1.8.10