ロード時間の高速化は、ウェブベースのアプリケーションにとって非常に重要です。特に、低速のモバイルネットワークでアプリケーションリソースをダウンロードする必要のあるモバイルデバイスで重要です。ロードが低速であると、ユーザーの操作性が低下し、バウンス率が高くなる可能性があります。そのため、ウェブビルドをモバイル用に最適化することが重要です。
ウェブベースのモバイルアプリケーションは、小規模なビルドとハイパフォーマンスのコードを使用する場合に最も良好に機能します。これは、ダウンロードするデータ、ユーザーのデバイスに保存するデータ、初期化時のロードするデータが削減され、ロード時間が短縮されるためです。
モバイル固有以外のウェブ最適化については、ウェブビルドの最適化を参照してください。
次の推奨設定を使用して、モバイル向け Unity ウェブプラットフォームに固有の最適化を行います。
| 推奨事項 | 説明 |
|---|---|
| サイズに合わせて最適化 | 開発ビルド設定を無効にし、ディスクサイズ (LTO でのディスクサイズ) に合わせてビルドを最適化します。 |
| Brotli 圧縮の使用 | Brotli 圧縮方法を使用してプレイヤービルドを圧縮します。 |
| Unity Addressables システムの使用 | アセットには Unity Addressables システムを使用します。 |
| オーディオファイルの最適化 | オーディオが占有するディスクスペースを削減します。 |
| プロジェクト内のグラフィックスの最適化 | グラフィックスが占有するディスクスペースを削減します。 |
| グラフィカルな品質レベルの変更 | 品質レベルを低くして、より高速なビルドを作成します。 |
ビルドサイズを縮小することは、ダウンロードするデータの削減につながり、これによって通常はロード時間が短くなり、ユーザーのデバイスで使用するストレージも少なくなるため、モバイルに適しています。
ビルドを可能な限り小規模にするには、開発ビルド設定を無効にし、ディスクサイズに合わせてビルドを最適化します。
File > Build Profiles に移動します。
Web を選択します。
Development Build が有効になっている場合は無効にします。
Code Optimization を Disk Size with LTO に設定します。
ノート: LTO を使用した最適化ビルドには、長い時間を要する場合があります。この最適化は、最終リリースまたはパフォーマンスをテストする必要がある場合にのみ使用してください。開発中の場合はより高速なビルドオプションを使用します。
ビルドサイズに影響するその他の設定については、ウェブビルドを最適化するための推奨プレイヤー設定およびウェブビルドからの未使用リソースの削除を参照してください。
設定を編集するスクリプトがあり、Disk Size with LTO 設定を C# で有効にする場合は、スクリプトに以下のコードを追加します。
// Set Platform Settings to optimize for disk size (LTO)
UnityEditor.WebGL.UserBuildSettings.codeOptimization = UnityEditor.WebGL.WasmCodeOptimization.DiskSizeLTO;
Brotli 圧縮は、ビルド中に Unity が事前に圧縮する設定です。Brotli 圧縮ファイルは gzip 圧縮ファイルよりもサイズが小さいため、ビルドサイズを縮小できます。
ただし、Brotli は圧縮により長い時間を要します。また、Chrome と Firefox のみが、HTTPS 全体で Brotli 圧縮をネイティブにサポートします。アプリケーションに適さない場合は、代わりに Gzip 圧縮を検討してください。
Brotli 圧縮設定を使用する方法は、以下のとおりです。
ウェブサーバーが正しいエンコードで Brotli ファイルを配信するように設定されていることを確認します。詳細については、ウェブアプリケーションのデプロイを参照してください。
Player 設定にアクセスします (メニュー: Edit > Project Settings > Player)。
Web settings タブをクリックします。
Publishing Settings セクションを展開します。
Compression Format を Brotli に設定します。
プロジェクト設定スクリプトがあり、C# で圧縮形式を変更する場合は、スクリプトに以下のコードを追加します。
// Set the compression format to Brotli
PlayerSettings.WebGL.compressionFormat = WebGLCompressionFormat.Brotli;
モバイルブラウザーアプリケーションは、ユーザーバウンス率を下げるためにロード時間が短いことを必要とします。起動時にすべてのアセットをロードするのではなく、初期化に要する時間が短い状態を保持するには、Addressables を使用して、アプリケーションがアセットを必要とする場合にのみアセットをロードします。ゲームがロードされるまで、特定のアセットのロードを延期します。
これらの変更については、作成した新しい Addressable ファイルで StreamingAssets/aa/catalog.json を更新してください。
Addressables の詳細と設定方法については、Addressables を参照してください。
Addressables をさらに最適化するには、以下のことをお試しください。
Addressables をグループにソートして、アセットバンドルの数を削減します。アセットバンドルの量が少ないほど、ビルドサイズは小さくなります。アドレス指定可能なグループとその作成方法の詳細については、グループの管理と作成を参照してください。
プロジェクトに多数のオーディオファイルがある場合は、ファイルを圧縮してオーディオファイルのサイズを小さくすることをお勧めします。ただし、オーディオを圧縮することによってオーディオの品質が低下する可能性があります。圧縮形式については、オーディオクリップを参照してください。
複雑なグラフィックスはリソースを消費して枯渇させ、それによりビルドのサイズが大きくなりパフォーマンスが低下する可能性があります。しかし、グラフィックスを最適化してビルドサイズを縮小し、パフォーマンスを向上させる方法があります。ビルドのグラフィックスを最適化するには、以下のことをお試しください。
ASTC 圧縮テクスチャタイプはテクスチャサイズが小さく、ダウンロード時間を節約できます。ASTC がサポートされていない場合は、ETC2 を検討してください。詳細については、テクスチャ形式を参照してください。
ASTC 圧縮テクスチャを使用する手順は、以下のとおりです。
プロジェクト内のテクスチャアセットを選択して、Texture Import Settings ウィンドウを開きます。
Web settings を選択します。
Override For Web を有効にします。
Format を ASTC ブロックオプションの 1 つに設定します。
ASTC 圧縮テクスチャを使用する場合は、圧縮により大きいブロックサイズを使用してみてください。ASTC は 4x4 から 12x12 テクセルまでのブロックサイズをサポートします。ブロックサイズが大きいほど、テクスチャの品質は低くなりますが、ビルドサイズは小さくなります。モバイルネットワークでのダウンロード時間を最適化する品質とサイズの適切なバランスを確保するには、8x8 の使用を検討してください。それでもダウンロード速度が過剰に遅い場合は、ブロックサイズを引き上げてみてください。詳細については、推奨、デフォルトおよびサポートされているテクスチャ形式 (プラットフォーム別) を参照してください。
ASTC 圧縮テクスチャのブロックサイズを設定するには、以下の操作を行います。
プロジェクトでテクスチャアセットを選択します。Texture Import Settings が表示されます。
Web settings を選択します。
Override For Web を有効にします。
Format を、RGB(A) Compressed ASTC 8x8 block など、より大きな ASTC ブロックオプションの 1 つに設定します。
推奨されるベストプラクティスは、グラフィカルな品質レベルを最も高速なオプションに設定することです。より高速なオプションによってビルドサイズが縮小されます。
グラフィカルな品質レベルを変更するには:
Quality 設定にアクセス (メニュー: Edit > Project Settings > Quality) します。
Low または Very Low の品質レベルを選択します。
ただし、最速の設定はアプリケーションの外観に影響を与える可能性があるため、アプリケーションが必要な外観となるようにしてください。
プロジェクト設定スクリプトがあり、スクリプトでプロジェクトの品質レベルを変更する場合は、以下のコードを追加します。
// Set the quality level to Very Low (index 0)
QualitySettings.SetQualityLevel(0, true);
SetQualityLevel() 関数は、品質レベル行列のインデックスを値として受け取ります。この場合の SetQualityLevel(0, true) は、Very Low 設定、つまり品質レベル行列の最初のオプションです。Low または 2 番目のオプションに変更するには、代わりに SetQualityLevel(1, true) を使用します。