/// <summary> /// 加载 /// </summary> /// <param name="_operation"></param> /// <returns></returns> IEnumerator Start(UAsyncOperation _operation, Func <byte[], byte[]> _unpackKeystore, Action <bool> _finished) { IsSuccess = _operation != null; Request = _operation; Info = new List <UFileVersionRemote>(); if (Request != null) { yield return(Request); string content = GetContent(Request, _unpackKeystore); if (string.IsNullOrEmpty(content)) { Debug.LogError("The Version Content is invalid!"); IsSuccess = false; yield break; } var list = JsonUtility.FromJson <FileVersionRemoteObject>(content); if (list != null && list.List != null) { Info.AddRange(list.List); } else { Debug.LogError("The Version Content dose not came from json!"); IsSuccess = false; } _finished?.Invoke(IsSuccess); } yield break; }
IEnumerator Start(string _assetName, Type _type, List <UAssetBundleCreateRequest> _list, Action <UnityEngine.Object> _callback) { float rate = 1f / _list.Count; foreach (var v in _list) { yield return(v); ValueProgress += rate; } ValueProgress = 1f; var header = _list[0]; if (header.AssetBundle != null) { var request = header.AssetBundle.LoadAssetAsync(_assetName, _type); Request = new UAsyncOperationUnity(request); yield return(request); Result = request.asset; _callback?.Invoke(Result); ValueProgress = 1.1f; } else { ValueProgress = 2.1f; } yield break; }
IEnumerator Start(IStage _stage, Action <IStage> _finished) { Request = _stage.Load(); yield return(Request); Request = new UAsyncOperationDone(); _finished?.Invoke(_stage); yield return(new WaitForEndOfFrame()); Completed?.Invoke(_stage as UStage); Completed = null; }
/// <summary> /// 获取下载数据的抽象过程 /// </summary> /// <param name="_operation"></param> /// <returns></returns> string GetContent(UAsyncOperation _operation, Func <byte[], byte[]> _unpackKeystore) { UDownloadRequest request = _operation as UDownloadRequest; byte[] binary; if (_unpackKeystore != null) { binary = _unpackKeystore(request.Bytes); } else { binary = request.Bytes; } if (binary != null) { return(Encoding.Default.GetString(binary)); } else { return(""); } }