Exemple #1
0
    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();
    }
Exemple #2
0
    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());
    }
Exemple #3
0
    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
                         ));
    }