コード例 #1
0
    public IEnumerator LoadTest12()
    {
        if (!UseCache())
        {
            yield break;
        }

        //一括ダウンロードエラーハンドリング
        yield return(Init());

        string[] names = new string[]
        {
            "prefabs",
            "testscene",
            "sprites/circle",
            "sprites/diamond",
            "sprites/hexagon",
            "sprites/polygon",
            "sprites/triangle",
            "error_data1",
            "error_data2",
        };

        ABLog.EnabledAssert = false;
        bool complete = false;
        bool ret      = false;
        List <System.Exception> errors = new List <System.Exception>();
        var progress = ABLoader.Download(names, r => { ret = r; complete = true; }, ex => errors.Add(ex));

        yield return(new WaitWhile(() => !complete));

        //全体は失敗
        Assert.IsFalse(ret);
        //エラーは2個
        Assert.AreEqual(errors.Count, 2);

        foreach (var name in names)
        {
            bool error = name.Contains("error");
            CacheTest(name, !error);
            LoadedTest(name, false);
        }
    }
コード例 #2
0
    public IEnumerator LoadTest11()
    {
        if (!UseCache())
        {
            yield break;
        }

        //一括ダウンロード
        yield return(Init());

        string[] names = new string[]
        {
            "prefabs",
            "testscene",
            "sprites/circle",
            "sprites/diamond",
            "sprites/hexagon",
            "sprites/polygon",
            "sprites/triangle",
        };


        //prefabsはtestmaterialに依存している
        Assert.AreEqual(ABLoader.GetSize(names, ignoreDpend: true), names.Length);
        Assert.AreEqual(ABLoader.GetSize(names), names.Length + 1);

        Assert.IsTrue(ABLoader.GetSize(names) == ABLoader.GetDownloadSize(names));

        bool loaded = false;

        ABLoader.LoadAsset <Sprite>("sprites/circle", "Circle", (x) => loaded = true, ex => throw ex);
        yield return(new WaitWhile(() => loaded));

        //一つダウンロードされたので1減る
        Assert.AreEqual(ABLoader.GetSize(names) - ABLoader.GetDownloadSize(names), 1);

        ABLoader.MaxDownloadCount = 0;

        loaded = false;
        var progress = ABLoader.Download(names, ret => loaded = ret, ex => throw ex);

        Assert.AreEqual(progress(), 0);

        ABLoader.MaxDownloadCount = 1;

        float lastProgress = 0;

        //進捗が取れる
        while (!loaded)
        {
            var p = progress();
            Assert.IsTrue(lastProgress <= p);
            lastProgress = p;
            Debug.LogFormat("download progress {0}", p);
            yield return(null);
        }
        Assert.AreEqual(progress(), 1);

        //キャッシュはされているがロードはされていない
        foreach (var name in names)
        {
            CacheTest(name, true);
            LoadedTest(name, false);
        }
    }