public void LoadBundle(BundleLoaderTypes type, Action <Figure> OnSuccess, Action <Exception> OnFail) { if (cacheResults && cachedBundles.TryGetValue(type, out Figure figure)) { OnSuccess(figure); StopPendingCoroutine(); return; } StopPendingCoroutine(); _pendingCoroutine = StartCoroutine(WaitForRequest(type, OnSuccess, OnFail)); }
IEnumerator WaitForRequest(BundleLoaderTypes type, Action <Figure> OnSuccess, Action <Exception> OnFail) { UnityWebRequest www = UnityWebRequestAssetBundle.GetAssetBundle($"{url}/{type}"); yield return(www.SendWebRequest()); if (www.result != UnityWebRequest.Result.Success) { OnFail(new Exception(www.error)); } else { try { var content = DownloadHandlerAssetBundle.GetContent(www); var figure = content.LoadAsset <GameObject>($"{type.ToString()}.prefab").GetComponent <Figure>(); if (figure != null) { OnSuccess(figure); if (cacheResults ! && cachedBundles.TryGetValue(type, out Figure cachedFigure)) { cachedBundles.Add(type, figure); } } else { OnFail(new Exception("no element in bundle")); } } catch (Exception _) { OnFail(_); } finally { AssetBundle.UnloadAllAssetBundles(false); } } }
private void SpawnFigure(BundleLoaderTypes type) { asyncBundleLoader.LoadBundle(type, OnLoadSuccess, OnLoadFailed); spawnUIController.StartSpawn(); }
private void OnCancelClicked() { spawnType = BundleLoaderTypes.none; StartSpawn(); }
private void OnSelectButtonClicked(BundleLoaderTypes type) { spawnType = type; selectPage.Close(); spawnPage.Open(); }
public void StartSpawn() { selectPage.Open(); spawnPage.Close(); spawnType = BundleLoaderTypes.none; }
private void OnSpawnButtonClicked(BundleLoaderTypes types) { SelectFigureAction?.Invoke(types); }