ダウンロードしたデータから作成したアセットバンドルからのオブジェクトがあると、三種類の方法でオブジェクトをロードできます:
AssetBundle.LoadAsset で名前の識別子を引数として使って、オブジェクトをロードします。名前はプロジェクトビューで表示されているものです。オプションとして、オブジェクトの種類を引数として LoadAsset メソッドに渡すことでロードされたオブジェクトが特定の種類であるかチェックすることができます。
AssetBundle.LoadAssetAsync は前述の Load メソッドと同様に動作しますが、アセットがロードされるときにメインのスレッドをブロックしません。これは大きなアセットや複数のアセットを同時にロードするときに、アプリケーションがポーズすることを避けるのに便利です。
AssetBundle.LoadAllAssets によりアセットバンドルに含まれるすべてのオブジェクトをロードします。AssetBundle.LoadAsset と同様にオブジェクトをタイプによってフィルタリングできます。
アセットをアンロードするためには AssetBundle.Unload を使用する必要があります。このメソッドは boolean の引数により Unity ですべてのデータをアンロードする(ロードされたアセットのオブジェクトを含めて)か、または、ダウンロードされたバンドルから圧縮されたデータのみをアンロードするか指定します。もしアプリケーションがアセットバンドルからなんらかのオブジェクトを使用していて、メモリを解放したい場合、False を渡してメモリから圧縮されたデータをアンロードできます。もしアセットバンドルから完全にすべてをアンロードしたい場合、True を渡して、アセットバンドルからロードされたアセットを破棄します。
AssetBundle.LoadAssetAsync メソッドを使用してオブジェクトを非同期ロードできて、アプリケーションが飛び飛びにおかしくなる可能性を減らします。
using UnityEngine;
// Note: This example does not check for errors. Please look at the example in the DownloadingAssetBundles section for more information
IEnumerator Start () {
while (!Caching.ready)
yield return null;
// Start a download of the given URL
WWW www = WWW.LoadFromCacheOrDownload (url, 1);
// Wait for download to complete
yield return www;
// Load and retrieve the AssetBundle
AssetBundle bundle = www.assetBundle;
// Load the object asynchronously
AssetBundleRequest request = bundle.LoadAssetAsync ("myObject", typeof(GameObject));
// Wait for completion
yield return request;
// Get the reference to the loaded object
GameObject obj = request.asset as GameObject;
// Unload the AssetBundles compressed contents to conserve memory
bundle.Unload(false);
// Frees the memory from the web stream
www.Dispose();
}