public void LoadAssetBundle(string bundleID, Action<AssetBundle> callBack = null, uint version = 0)
{
bundleID = bundleID.ToLower();
//Check to see if bundle is already loaded in memory
IEnumerable bundles = AssetBundle.GetAllLoadedAssetBundles();
foreach (AssetBundle bundle in bundles)
{
if (bundle.name == bundleID)
{
callBack(bundle);
return;
}
}
//this will call the SDK loading api in the future
//For now, we'll directly load the asset bundle
StartCoroutine(DownloadAssetBundle(bundleID, callBack, version));
}
private IEnumerator DownloadAssetBundle(string bundleID, Action<AssetBundle> callBack, uint version = 0)
{
Debug.Log("Starting Download of Assetbundle: [" + bundleID + "]");
if (UseLocalAssetBundles)
{
//Caching.ClearCache ();
bundleID = bundleID.ToLower();
DirectoryInfo dirInfo = new DirectoryInfo(Application.streamingAssetsPath);
string bundlePath = dirInfo.FullName + "/AssetBundles/iOS/";
#if UNITY_EDITOR
bundlePath = dirInfo.FullName + "/AssetBundles/StandaloneOSXUniversal/";
#endif
AssetBundle bundle = null;
// Fix to load android asset bundles
#if UNITY_ANDROID && !UNITY_EDITOR
bundlePath = dirInfo.FullName + "/AssetBundles/Android/";
if(BetterStreamingAssets.FileExists("AssetBundles/Android/" + bundleID)){
AssetBundleCreateRequest t_bund = BetterStreamingAssets.LoadAssetBundleAsync("AssetBundles/Android/" + bundleID);
yield return t_bund;
bundle = t_bund.assetBundle;
}
#else
if (File.Exists(bundlePath + bundleID))
{
bundle = AssetBundle.LoadFromFile(bundlePath + bundleID) as AssetBundle;
}
#endif
if (bundle == null)
{
Debug.Log("Error loading bundle at path " + bundlePath + bundleID);
}
if (callBack != null)
{
callBack(bundle);
}
}
else
{
//This will pull from the cache if we're loading a previously loaded asset bundle with the same version number
UnityWebRequest uwr = UnityWebRequest.GetAssetBundle("https://squarepanda-games-test.s3.amazonaws.com/squareworldproto/AssetBundles/" + bundleID, version, 0);
uwr.SendWebRequest();
while (!uwr.isDone)
{
Debug.Log(uwr.downloadProgress);
yield return 0;
}
//yield return uwr.SendWebRequest();
if (uwr.isNetworkError || uwr.isHttpError)
{
Debug.Log(uwr.error);
}
else
{
AssetBundle bundle = DownloadHandlerAssetBundle.GetContent(uwr);
if (callBack != null)
{
callBack(bundle);
}
}
uwr.Dispose();
}
}