CarpDefineAB createDefineAB(string res, string assetName, System.Action <UnityEngine.Object, System.Object> cb, System.Action <CarpDefineAB> doneCB, System.Type t, System.Object arg, bool instantiate, bool frame) { CarpDefineAB define = new CarpDefineAB(); define.Bind(res, assetName, null, cb, doneCB, t, arg, instantiate, frame); return(define); }
bool loadAssetAsync(CarpDefineAB checkAsset, AssetBundle assetBundle, System.Type t) { requestLoads[checkAsset.assetKey] = null; if (assetBundle == null) { errorAssets.Add(checkAsset.assetKey, true); } else if (checkAsset.assetName.Equals(string.Empty)) { requestLoads[checkAsset.assetKey] = t == null?assetBundle.LoadAllAssetsAsync() : assetBundle.LoadAllAssetsAsync(t); errorAssets.Add(checkAsset.assetKey, false); } else { bool exist = assetBundle.Contains(checkAsset.assetName); if (exist) { requestLoads[checkAsset.assetKey] = t == null?assetBundle.LoadAssetAsync(checkAsset.assetName) : assetBundle.LoadAssetAsync(checkAsset.assetName, t); } checkError(!exist, string.Format("资源加载错误:({0}),发生在加载资源内容阶段", checkAsset.assetKey)); errorAssets.Add(checkAsset.assetKey, !exist); } return(true); }
void reqAssets(CarpDefineAB define, bool imme) { for (int i = 0; i < define.depends.Length; i++) { reqLoadAsset(define.depends[i], string.Empty, null, imme); } reqLoadAsset(define.ab, define.assetName, define.loadType, imme); }
CarpDefineAB createDefineAB(string ab, string assetName, System.Action <UnityEngine.Object, System.Object> cb, System.Action <CarpDefineAB> doneCB, System.Type t, System.Object arg, bool instantiate, bool frame) { CarpDefineAB define = new CarpDefineAB(); string[] depends = CarpAssetDefine.manifest.GetAllDependencies(ab); define.Bind(ab, assetName, depends, cb, doneCB, t, arg, instantiate, frame); return(define); }
bool waitLoadDone(CarpDefineAB define) { if (!isLoadDone(define.assetKey)) { return(true); } return(loadAssetBundle(define)); }
bool frameCreateEntity(UnityEngine.Object obj, CarpDefineAB define) { if (!define.frame) { return(false); } carpInstantiate.willFrameCreateEntity(obj, define.ab, define.callback, define.arg); return(true); }
public override void assetLoadAsync(string res, string assetName, System.Action <UnityEngine.Object, System.Object> cb, System.Action <CarpDefineAB> doneCB, System.Type t, System.Object arg, bool instantiate, bool frame) { res = res.ToLower(); assetsStore.refAsset(res); CarpDefineAB define = createDefineAB(res, string.Empty, cb, doneCB, t, arg, instantiate, frame); willRequest.Add(define); enabled = true; }
public void Update() { while (willRequest.Count > checkIndex) { checkAsset = willRequest[checkIndex]; checkIndex = checkAsyncAsset() ? ++checkIndex : checkIndex; } checkState(); }
bool assetBundleLoad(UnityEngine.Object obj, CarpDefineAB define) { if (define.instantiate) { return(false); } define.callback(obj, define.arg); return(true); }
bool isDependDone(CarpDefineAB define) { bool done = true; for (int i = 0; i < define.depends.Length && done; i++) { done = assetDone(define.depends[i]); } return(done); }
void assetAsyncDone(CarpDefineAB define) { UnityEngine.Object obj = assetsStore.getLoadObject(define.ab, define.assetName); if (assetBundleLoad(obj, define)) { return; } if (frameCreateEntity(obj, define)) { return; } UnityEngine.Object instObj = carpInstantiate.createAssetEntity(obj, define.ab); define.callback(instObj, define.arg); }
bool loadAssetBundle(CarpDefineAB checkAsset) { UnityEngine.Object loadObj = null; if (requestLoads[checkAsset.assetKey] != null && checkAsset.assetName.Equals(string.Empty)) { loadObj = requestLoads[checkAsset.assetKey].allAssets[0]; } else if (requestLoads[checkAsset.assetKey] != null) { loadObj = requestLoads[checkAsset.assetKey].asset; } requestLoads.Remove(checkAsset.assetKey); errorAssets.Remove(checkAsset.assetKey); assetsStore.addLoadObject(checkAsset.ab, checkAsset.assetName, loadObj); return(false); }
public override void assetLoadAsync(string ab, string assetName, System.Action <UnityEngine.Object, System.Object> cb, System.Action <CarpDefineAB> doneCB, System.Type t, System.Object arg, bool instantiate, bool frame) { ab = ab.ToLower(); if (CarpAssetDefine.manifest == null) { return; } if (!existAsset(ab)) { Debug.LogError("文件不存在:" + ab); return; } assetsStore.refAsset(ab); CarpDefineAB define = createDefineAB(ab, assetName, cb, doneCB, t, arg, instantiate, frame); willRequest.Add(define); enabled = true; }
public override void assetLoad(string ab, string assetName, System.Type t) { if (CarpAssetDefine.manifest == null) { return; } if (!existAsset(ab)) { Debug.LogError("文件不存在:" + ab); return; } assetsStore.refAsset(ab); CarpDefineAB define = createDefineAB(ab, assetName, null, null, t, null, false, false); reqAssets(define, true); while (!isDone(define)) { } while (existLoadAsset(define.assetKey) && waitLoadDone(define)) { } loadAssetImme(ab, assetName, define.assetKey, t); }
protected void asyncAssetDone(CarpDefineAB define) { define.doneCB(define); }
void checkState() { checkIndex = 0; checkAsset = null; enabled = willRequest.Count > 0; }
bool isDone(CarpDefineAB define) { return(assetDone(define.ab) ? isDependDone(define) : false); }