2016-09-03 6 views
0

Я использую следующий код, он работает, если пакет устанавливается только в первый раз, в противном случае я получаю сообщение об ошибке уже существующего. Так что мой вопрос, как я могу проверить, если пакет существует и если да, то читать его из кэшированного файлаLoadFromCacheOrDownload Как загрузить из кеша, если файл существует

IEnumerator DownloadAndCache() { 
    while(!Caching.ready) 
     yield return null; 

    using (WWW www = WWW .LoadFromCacheOrDownload(bundleURL, Version)) { 
     yield return www; 
     if (www .error != null) 
     throw new UnityException("WWW Download had an error: " + www .error); 
     // Must add check mechanism here 

     AssetBundle bundle = www .assetBundle; 
    // bundle.Unload(false); this doesnt work 
     if (AssetName == "") { 
      mBundleInstance = Instantiate (bundle.mainAsset) as GameObject; 
      mBundleInstance.transform.parent = cloudtarget.transform; 
     } 
     else { 
      mBundleInstance = Instantiate(bundle.LoadAsset (AssetName)) as GameObject; 
      mBundleInstance.transform.parent = cloudtarget.transform; 
     } 
    } 
} 

Спасибо

+0

bundle.Unload (false); после того, как еще решила ошибку, но я обновляю ее каждый раз, как я могу исправить эту проблему повторной загрузки и загрузить установленный пакет из кеша – firativerson

ответ

0

Все кэшированные расслоения на активы доступа по их именам предположим, если имя ваш пакет актива а затем использовать:

Caching.IsVersionCached(AssetBundleName, version) // AssetBundleName = "abc" 

Помните еще одну вещи, что имя, что важно, например, , если вы загружаете вам пакет активов от http://somewibsite.com/AssetBundle/abc тогда все доменная части будет игнорироваться, а только имя а сохраняются как ваше имя пакета активов.