Symptoms:
- I want to update or remove an old version of my AssetBundles.
Cause:
You may have problems with your downloaded AssetBundles, or you want to free up space by deleting unused or old AssetBundles.
Resolution:
Solution #1:
Use Caching.ClearCache() to delete all AssetBundles that have been cached by the current application. Caching.ClearCache() returns a bool depending on if it was able to complete the operation or not:
public static void ClearCache () { if (Caching.ClearCache()) { Debug.Log("Successfully cleaned the cache"); } else { Debug.Log("Cache is being used"); } }
If you want to delete a specific AssetBundle version instead of the entire cache, you can use Caching.ClearCachedVersion()
If you want to keep one version and delete all others of a specific AssetBundle, you can use Caching.ClearOtherCachedVersions()
Solution #2:
Use Cache.expirationDelay to set the number of seconds that an AssetBundle may remain unused in the cache before it is automatically deleted. When a bundle is downloaded, the timestamp is stored for that given bundle.
To set the expirationDelay property, an entry for your application needs to be in the Cache folder. That setting is stored in a file in your applications' root Cache folder. If the folder for your application does not exist, the file cannot be written. For that entry to exist, you need to request a bundle. So to set the expirationDelay, first request at least one bundle, which will create the folder for your app's bundles. You could use any bundle to make sure the folder exists before you call that property.
You can use the solutions individually or at the same time.
More Information: