Question by
mackot · Mar 16, 2016 at 02:12 PM ·
assetbundlewwwsave datacash
AssetBundle dont saves in cash
I create my own assetbundle's with AssetBundle manager, all works fine i can download and use them in game, but unity dont save them in cash. If dont have internet connection they dont load, though they should, becouse AssetBundle manager use LoadFromCacheOrDownload, maybe something wrong with my code?
using UnityEngine;
using System.Collections;
using AssetBundles;
using UnityEngine.UI;
public class MainVariants : MonoBehaviour
{
public Image menuImage;
const string variantAssetBundle = "lang";
const string assetName = "mainmenu_ground";
private string[] _activeVariants;
void Awake()
{
_activeVariants = new string[1];
}
public void LoadAsset(string assetname)
{
_activeVariants[0] = assetname;
StartCoroutine(BeginExample());
}
IEnumerator BeginExample()
{
if(GameObject.FindObjectOfType<AssetBundleManager>()==null)
yield return StartCoroutine(Initialize());
// Set active variants.
AssetBundleManager.ActiveVariants = _activeVariants;
yield return StartCoroutine(InstantiateImageAsync(variantAssetBundle, assetName, menuImage));
//unload variant if in future player want change language asset
//AssetBundleManager.UnloadAssetBundle(variantAssetBundle +"."+ _activeVariants[0]);
}
// Initialize the downloading url and AssetBundleManifest object.
protected IEnumerator Initialize()
{
// Don't destroy this gameObject as we depend on it to run the loading script.
DontDestroyOnLoad(gameObject);
#if UNITY_EDITOR
AssetBundleManager.SetDevelopmentAssetBundleServer();
#else
AssetBundleManager.SetSourceAssetBundleURL("file://C:/Users/toshiba/Desktop/UssetBundleTest/AssetBundles/");
// Or customize the URL based on your deployment or configuration
//AssetBundleManager.SetSourceAssetBundleURL("http://www.MyWebsite/MyAssetBundles");
#endif
// Initialize AssetBundleManifest which loads the AssetBundleManifest object.
var request = AssetBundleManager.Initialize();
if (request != null)
yield return StartCoroutine(request);
}
protected IEnumerator InstantiateImageAsync(string assetBundleName, string assetName, Image img)
{
// This is simply to get the elapsed time for this phase of AssetLoading.
float startTime = Time.realtimeSinceStartup;
// Load asset from assetBundle.
AssetBundleLoadAssetOperation request = AssetBundleManager.LoadAssetAsync(assetBundleName, assetName, typeof(Sprite));
if (request == null)
{
menuText.text = "null";
yield break;
}
yield return StartCoroutine(request);
// Get the asset.
Sprite spr = request.GetAsset<Sprite>();
if (spr != null)
img.sprite = spr;
// Calculate and display the elapsed time.
float elapsedTime = Time.realtimeSinceStartup - startTime;
Debug.Log(assetName + (spr == null ? " was not" : " was") + " loaded successfully in " + elapsedTime + " seconds");
}
}
Comment
Your answer
Follow this Question
Related Questions
using Asset Bundles to reduce my WebGl build size 0 Answers
Finding audio clips in a specific folder if it is exist (Android) 0 Answers
Not possible to cache assetbundles behind server authentication? 0 Answers
Using Asset Bundle on Web Server for image sequence animation 0 Answers
AssetBundle LoadAsset and LoadAssetAsync causes brief lag or frame loss 1 Answer