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); } }
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); } }