public IEnumerator GetAssetBundle() { yield return(GetAssetBundleList()); var lists = Autoya.AssetBundle_AssetBundleLists(); True(lists != null); var done = false; var assetName = lists.Where(list => list.identity == "main_assets").FirstOrDefault().assetBundles[0].assetNames[0]; if (assetName.EndsWith(".png")) { Autoya.AssetBundle_LoadAsset <Texture2D>( assetName, (name, tex) => { done = true; }, (name, err, reason, autoyaStatus) => { Fail("name:" + name + " err:" + err + " reason:" + reason); } ); } else { Autoya.AssetBundle_LoadAsset <GameObject>( assetName, (name, obj) => { done = true; }, (name, err, reason, autoyaStatus) => { Fail("name:" + name + " err:" + err + " reason:" + reason); } ); } yield return(WaitUntil( () => done, () => { throw new TimeoutException("not yet done."); } )); Autoya.AssetBundle_UnloadOnMemoryAssetBundles(); }
public IEnumerator Teardown() { Autoya.AssetBundle_UnloadOnMemoryAssetBundles(); var discarded = false; // delete assetBundleList anyway. Autoya.AssetBundle_DiscardAssetBundleList( () => { discarded = true; }, (code, reason) => { switch (code) { case Autoya.AssetBundlesError.NeedToDownloadAssetBundleList: { discarded = true; break; } default: { Fail("code:" + code + " reason:" + reason); break; } } } ); yield return(WaitUntil( () => discarded, () => { throw new TimeoutException("too late."); } )); var listExists = Autoya.AssetBundle_IsAssetBundleFeatureReady(); True(!listExists, "exists, not intended."); True(Caching.CleanCache()); }
public IEnumerator UpdateListWithOnMemoryAssetsThenPreloadUnloadedChangedAsset() { var done = false; Autoya.AssetBundle_DownloadAssetBundleListsIfNeed( status => { done = true; }, (code, reason, asutoyaStatus) => { Fail("UpdateListWithOnMemoryAssets failed, code:" + code + " reason:" + reason); } ); yield return(WaitUntil( () => done, () => { throw new TimeoutException("faild to get assetBundleList."); } )); True(Autoya.AssetBundle_IsAssetBundleFeatureReady()); UnityEngine.Object[] loadedAssets = null; // 全てのABをロード yield return(LoadAllAssetBundlesOfMainAssets(objs => { loadedAssets = objs; })); True(loadedAssets != null); var loadedAssetBundleNames = Autoya.AssetBundle_AssetBundleLists().Where(list => list.identity == "main_assets").FirstOrDefault().assetBundles.Select(a => a.bundleName).ToArray(); // 1.0.1 リストの更新判断の関数をセット var listContainsUsingAssetsAndShouldBeUpdate = false; Autoya.Debug_SetOverridePoint_ShouldRequestNewAssetBundleList( (basePath, identity, ver) => { var url = basePath + identity + "/" + AssetBundlesSettings.PLATFORM_STR + "/" + ver + "/" + identity + ".json"; return(Autoya.ShouldRequestOrNot.Yes(url)); } ); Autoya.Debug_SetOverridePoint_ShouldUpdateToNewAssetBundleList( condition => { if (condition == Autoya.CurrentUsingBundleCondition.UsingAssetsAreChanged) { listContainsUsingAssetsAndShouldBeUpdate = true; } return(true); } ); // 1.0.1リストを取得 Autoya.Http_Get( "https://httpbin.org/response-headers?" + AuthSettings.AUTH_RESPONSEHEADER_RESVERSION + "=main_assets:1.0.1", (conId, data) => { // pass. }, (conId, code, reason, status) => { Fail(); } ); yield return(WaitUntil( () => listContainsUsingAssetsAndShouldBeUpdate, () => { throw new TimeoutException("failed to get response."); }, 10 )); True(Autoya.AssetBundle_AssetBundleLists().Where(list => list.identity == "main_assets").FirstOrDefault().version == "1.0.1"); // unload all assets on memory. Autoya.AssetBundle_UnloadOnMemoryAssetBundles(); // preload all. var preloadDone = false; // 更新がかかっているABを取得する。 var preloadList = new PreloadList("dummy", loadedAssetBundleNames); Autoya.AssetBundle_PreloadByList( preloadList, (preloadCandidateBundleNames, go, stop) => { // all assetBundles should not be download. on memory loaded ABs are not updatable. True(preloadCandidateBundleNames.Length == 1); go(); }, progress => { }, () => { preloadDone = true; }, (code, reason, status) => { Fail("code:" + code + " reason:" + reason); }, (failedAssetBundleName, code, reason, status) => { Fail("failedAssetBundleName:" + failedAssetBundleName + " code:" + code + " reason:" + reason); }, 5 ); yield return(WaitUntil( () => preloadDone, () => { throw new TimeoutException("failed to preload."); }, 10 )); }