前述の “アセットバンドルのワークフロー” セクションでは、BuildPipeline.BuildAssetBundles を使用してアセットバンドルをビルドする方法を説明しています。API 呼び出しは、指定した出力ディレクトリにビルド処理の結果を書き込みます。アセットバンドルファイルと各アセットバンドルの .manifest ファイルも書き込まれます。このセクションでは、ビルドプロセスによって書き込まれたファイルの詳細について説明します。
アセットバンドルファイルには .manifest の拡張子がなく、アセットをロードするためにランタイムにロードします。
アセットバンドルファイルは複数のファイルを内部に持つアーカイブです。これは法線アセットバンドルの構造体の例です。
メインファイルは Unity のバイナリ SerializedFile 形式を使用します。AssetBundle オブジェクトと、アセットバンドルに (明示的にまたは暗示的に) 含まれるすべてのアセットのオブジェクトが含まれています。オーディオやビデオのコンテンツは .resource ファイルに格納され、テクスチャデータは .resS ファイルに格納されます。
Scene アセットバンドル内のコンテンツは似ていますが、個々のシーンのストリームロード用に最適化されています。シーンごとに 2 つの SerializedFile が含まれます。
追加のマニフェストバンドルも含め、生成されたすべてのアセットバンドルに対し、関連するマニフェストファイルが生成されます。そのマニフェストファイルには .manifest 拡張子があり、任意のテキストエディターで開くことができます。バンドルの巡回冗長検査 (CRC) データや依存関係データなどの情報を含んでいます。通常のアセットバンドルのマニフェストファイルは以下のようなものです。
ManifestFileVersion: 0
CRC: 2422268106
Hashes:
AssetFileHash:
serializedVersion: 2
Hash: 8b6db55a2344f068cf8a9be0a662ba15
TypeTreeHash:
serializedVersion: 2
Hash: 37ad974993dbaa77485dd2a0c38f347a
HashAppended: 0
ClassTypes:
- Class: 91
Script: {instanceID: 0}
Assets:
Asset_0: Assets/Mecanim/StateMachine.controller
Dependencies: {}
これには含まれるアセット、依存関係、その他の情報が示されています。
ビルドによって新たに 2 つのファイルが生成されます。
1 つ目は、アセットバンドルがビルドされ、配置されたディレクトリに基づく名前の小さなアセットバンドルです。このファイルは Manifest Bundle と呼ばれ、ランタイムにロードするバンドルの依存関係の確認に役立つ AssetBundleManifest オブジェクトが格納されています。このバンドルとマニフェストオブジェクトの使用方法の詳細については、アセットバンドルを使いこなすのドキュメントを参照してください。
マニフェストバンドルには .manifest ファイルも生成されます。コンテンツの外観は次のようになります。
ManifestFileVersion: 0
AssetBundleManifest:
AssetBundleInfos:
Info_0:
Name: scene1assetbundle
Dependencies: {}
この .manifest ファイルには、マニフェストバンドルがどのように関連し、どのような依存関係があるかが記録されます。これは、マニフェストバンドル内の AssetBundleManifest オブジェクトによって記録される情報に似ています。また、テキストファイルであるため人間が読むこともでき、外部ツールによる解析にも便利です。この .manifest ファイルは、アセットバンドルで使用するタイプが Player Build のコンテンツで使用されていない場合に、それらのタイプの code stripping を防止する上で重要です。Player 設定でコードストリッピングが有効になっている場合は、BuildPlayerOptions.assetBundleManifestPath を設定して、Player Build の実行時にこのマニフェストへのパスを渡す必要があります。コードストリッピングの詳細については、ディストリビューションサイズとコードストリッピングを参照してください。
注意: BuildPipeline.BuildAssetBundles の代わりに Addressables パッケージを使用してビルドする場合、同じ形式のアセットバンドルファイルが書き込まれますが、マニフェストファイルは作成されず、マニフェストバンドルも生成されません。詳細については、Addressables ドキュメントを参照してください。