前提
Unityのバージョン:Unity2018 2.5f1
AssetBundleの管理には、Addressable Asset System(0.3.5)を利用しています。
目的の処理と発生している問題
AssetBundleをダウンロード(=キャッシュ保存)したり、
ダウンロードしたデータを削除したりするSceneを作成しています。
キャッシュされたAssetBundleを個別にキャッシュ削除するため、
Caching.ClearCachedVersion()を実施することで、キャッシュ削除を実施しようとしています。
Unityのシミュレータを起動後、AssetBundleをLoad/Unloadし、
キャッシュされた状態とした状態からCaching.ClearCachedVersion()を実行すると、
下記の警告が表示され、メソッドからもfalseが返され、削除に失敗してしまいます。
(X/xの部分は実際のバンドル名やhashが入っています)
AssetBundle 'XXXX.bundle' with hash 'xxxx' is still in use. UnityEngine.Caching:ClearCachedVersion(String, Hash128)
試したこと
Unityのシミュレータを再起動した後、Load/Unload処理を実施する前に
Caching.ClearCachedVersion()を実行した場合は、trueが返され、キャッシュの削除に成功するようです。
⇒原因や回避方法などの情報について、ご教示をお願いできますでしょうか。
(参考1)エラー発生箇所のソースコード
C#
1Caching.ClearCachedVersion(bundleName, hash);
(参考2)Load/Unload処理
下記のように、Addressable Asset Systemを利用し、
Addressables.LoadAsset()でのLoad処理の完了後に、
Addressables.ReleaseAsset()することUnload処理を行っています。
(※AssetBundleをキャッシュするための処理です)
C#
1Addressables.LoadAsset<Object>(address).Completed += op => 2 { 3 Addressables.ReleaseAsset(op.Result); 4 };
あなたの回答
tips
プレビュー