UnityAssetBundleのインクリメンタルビルドの仕組みインクリメンタルビルド?インクリメンタルビルドの仕組み挙動を確認するAssetBundleを消さずにManifestだけ消してみるManifestを消さずにAssetBundleだけ消してみる関連Unity2019.2.10インクリメンタルビルド?AssetBundleのインクリメンタルビルドとは「変更のあったAssetBundleだけをビルドするための仕組み」です。Bをビルドしたとします。Aを構成するアセットだけに変更を加えて再度ビルドします。前回ビルドしたものが残っていればそれを使うことでビルドする必要がなくなります。このように変更が加わってものだけをビルドしてビルド時間を短縮する仕組みをインクリメンタルビルドといいます。インクリメンタルビルドの仕組みさてそれではUnityはどのようにこのインクリメンタルビルドを実現しているのでしょうか。インクリメンタルビルドをするためには「更新されたかどうか」の判定をする必要があります。UnityではこれをAssetFileHashとTypeTreeHashという二つのハッシュ値を使うことにより判定しています。これらついて詳しくは以下の記事にまとめていますので必要に応じて参照してください。light11.hatenadiary.comこれら二つのハッシュ値はAssetBundleをビルドする前に、そのAssetBundleを構成するアセットの情報から計算されます。それらをビルド済みのAssetBundleのハッシュ値と比較します。このハッシュ値は各AssetBundleがビルドした時に作られる、同名の.manifestファイルに書き込まれています。このように、計算したハッシュ値と.manifestファイルのハッシュ値を比較して差分があればビルドを行い、なければビルドをスキップします。以上がインクリメンタルビルドの仕組みです。挙動を確認する次にインクリメンタルビルドの挙動を確認してみます。下記のようにAssetBundle_AとAssetBundle_BというPrefabを作ります。それぞれのPrefabには以下のようにAssetBundle名を設定しています。assetbundle_bこの状態でビルドすると二つのアセットバンドルとそのManifestファイルが生成されます。ここでAssetBundle_AのTransformに変更を加えて再びビルドしてみます。assetbundle_aの更新日時が変わり、AssetBundleが更新されていることが確認できました。AssetBundleのビルドにはAssetBundleBrowserを使っています。これについては以下の記事で説明していますので、必要に応じて参照してください。light11.hatenadiary.comAssetBundleを消さずにManifestだけ消してみるインクリメンタルビルドの挙動を確認するために、もう少し検証をしてみます。以下のようにAssetBundleを作っておきます。ここで、Manifestファイルだけを削除します。アセットには何も変更を加えず再ビルドを加えると下記のような結果となります。アセットには何も変更を加えていないにもかかわらずAssetBundleが再ビルドされました。このように更新判定のためのハッシュ値が書かれているManifestファイルが消えると更新判定ができないのでビルドが走ります。Manifestを消さずにAssetBundleだけ消してみる次に、反対にManifestファイルは消さずにAssetBundleだけを消してみます。最初はこんな感じです。この状態からManifestファイルだけを残してAssetBundleを削除します。次にAssetには更新を加えずにビルドを行うと以下のような結果となります。AssetBundleが消えたまま、再ビルドされませんでした。今回はManifestを見てビルドをする必要がないと判断されたため、AssetBundleが消えたままになりました。»プロフィールUnityエンジニア。グラフィックスへの興味が強めです。インストールから基本的な使い方・注意点まとめ【Unity】【エディタ拡張】テクスチャを指定したUV座標で切り取って保存する【Unity】指定したアセットのAssetBundle名を取得する【Unity】【シェーダ】スクリプトからVP行列を渡してシェーダで座標変換に使う【Unity】【シェーダ】FloatやVectorをリニアライズ対象にするGammaアトリビュート月別アーカイブはてなブログをはじめよう!halya_11さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。