AssetBundleのハッシュ値を計算する方法のまとめです。
Unityの機能を使わずにハッシュ値を計算する
まず、Unityの機能を使わずにAssetBundleのファイルハッシュを求める方法を紹介します。
これは以下の記事にまとめているのでこちらを参照してください。
細かい制御を行いたければこの方法をお勧めします。
Unityの機能を使ってハッシュ値を計算する
AssetBundleのハッシュ値はAssetBundleManifest.GetAssetBundleHash()
で求めることもできます。
もともとAssetBundleのキャッシュの仕組みを実現するためのAPIのようです。
実際には以下のようにして使います。
using UnityEngine; public class Example : MonoBehaviour { private void Start() { var assetBundle = AssetBundle.LoadFromFile(@"C:\Path\To\ManifestAssetBundle"); var manifest = assetBundle.LoadAsset<AssetBundleManifest>("AssetBundleManifest"); var hash = manifest.GetAssetBundleHash("example"); Debug.Log(hash); } }
得られるのは.manifestのAssetFileHash
ちなみに、前節のAssetBundleManifest.GetAssetBundleHash()
で取得できる値は、
.manifestファイル内のAssetFileHashの値と一致するようです。
ManifestFileVersion: 0 CRC: 111306602 Hashes: AssetFileHash: serializedVersion: 2 Hash: b0bc61a23cff86b3d8fef6bd18899500 TypeTreeHash: serializedVersion: 2 Hash: a15026e7645264409a88f84f584030a1 HashAppended: 0 ClassTypes: - Class: 21 Script: {instanceID: 0} - Class: 48 Script: {instanceID: 0} Assets: - Assets/Material.mat Dependencies: []