public int AddAssetBundleName(string name, string[] depends) { if (string.IsNullOrEmpty(name)) { return(-1); } if (mABUnitArray == null) { mABUnitArray = new List <ABUnit>(); } var resSearchRule = ResSearchRule.Allocate(name); AssetData config = GetAssetData(resSearchRule); resSearchRule.Recycle2Cache(); if (config != null) { return(config.AssetBundleIndex); } mABUnitArray.Add(new ABUnit(name, depends)); int index = mABUnitArray.Count - 1; AddAssetData(new AssetData(name, ResType.AssetBundle, index, null)); return(index); }
protected void InitAssetBundleName() { mAssetBundleArray = null; var resSearchRule = ResSearchRule.Allocate(mAssetName, mOwnerBundleName); var config = ResDatas.Instance.GetAssetData(resSearchRule); resSearchRule.Recycle2Cache(); if (config == null) { Log.E("Not Find AssetData For Asset:" + mAssetName); return; } var assetBundleName = ResDatas.Instance.GetAssetBundleName(config.AssetName, config.AssetBundleIndex, mOwnerBundleName); if (string.IsNullOrEmpty(assetBundleName)) { Log.E("Not Find AssetBundle In Config:" + config.AssetBundleIndex + mOwnerBundleName); return; } mAssetBundleArray = new string[1]; mAssetBundleArray[0] = assetBundleName; }
private void AddRes2Array(IRes res, bool lastOrder) { var searchRule = ResSearchRule.Allocate(res.AssetName); //再次确保队列中没有它 var oldRes = FindResInArray(mResList, searchRule); searchRule.Recycle2Cache(); if (oldRes != null) { return; } res.Retain(); mResList.Add(res); if (res.State != ResState.Ready) { ++mLoadingCount; if (lastOrder) { mWaitLoadList.AddLast(res); } else { mWaitLoadList.AddFirst(res); } } }
public void Add2Load(string ownerBundle, string assetName, Action <bool, IRes> listener = null, bool lastOrder = true) { var searchRule = ResSearchRule.Allocate(assetName, ownerBundle); Add2Load(searchRule, listener, lastOrder); searchRule.Recycle2Cache(); }
/// <summary> /// ID:RKRL003 只通过资源名字进行同步加载, /// </summary> /// <param name="name">资源名字</param> /// <returns></returns> public Object LoadSync(string name) { var resSearchRule = ResSearchRule.Allocate(name); var retAsset = DoLoadSync(resSearchRule); resSearchRule.Recycle2Cache(); return(retAsset); }
/// <summary> /// ID:RKRL003 同步加载AssetBundle里的资源 ResLoader.LoadSync<T>(string ownerBundle,string assetBundle) /// </summary> /// <param name="ownerBundle">assetBundle名字</param> /// <param name="assetName">资源名字</param> /// <typeparam name="T"></typeparam> /// <returns></returns> public T LoadSync <T>(string ownerBundle, string assetName) where T : Object { var resSearchRule = ResSearchRule.Allocate(assetName, ownerBundle, typeof(T).ToString()); var retAsset = DoLoadSync(resSearchRule); resSearchRule.Recycle2Cache(); return(retAsset as T); }
public bool AddAssetData(AssetData data) { if (mAssetDataMap == null) { mAssetDataMap = new Dictionary <string, AssetData>(); } if (mUUID4AssetData == null) { mUUID4AssetData = new Dictionary <string, AssetData>(); } string key = data.AssetName.ToLower(); if (mAssetDataMap.ContainsKey(key)) { var resSearchRule = ResSearchRule.Allocate(data.AssetName); var old = GetAssetData(resSearchRule); resSearchRule.Recycle2Cache(); try { Log.E("Already Add AssetData :{0} \n OldAB:{1} NewAB:{2}", data.AssetName, mABUnitArray[old.AssetBundleIndex].abName, mABUnitArray[data.AssetBundleIndex].abName); } catch (Exception e) { Debug.LogWarning(e); } } else { mAssetDataMap.Add(key, data); } if (mUUID4AssetData.ContainsKey(data.UUID)) { var resSearchRule = ResSearchRule.Allocate(data.AssetName, data.OwnerBundleName); AssetData old = GetAssetData(resSearchRule); resSearchRule.Recycle2Cache(); Log.E("Already Add AssetData :{0} \n OldAB:{1} NewAB:{2}", data.UUID, mABUnitArray[old.AssetBundleIndex].abName, mABUnitArray[data.AssetBundleIndex].abName); } else { mUUID4AssetData.Add(data.UUID, data); } return(true); }
public void Add2Load(List <string> list) { if (list == null) { return; } for (var i = list.Count - 1; i >= 0; --i) { var resSearchRule = ResSearchRule.Allocate(list[i]); Add2Load(resSearchRule); resSearchRule.Recycle2Cache(); } }
public void ReleaseRes(string resName) { if (string.IsNullOrEmpty(resName)) { return; } #if UNITY_EDITOR if (Res.SimulateAssetBundleInEditor) { if (mCachedSpriteDict.ContainsKey(resName)) { var sprite = mCachedSpriteDict[resName]; GameObject.Destroy(sprite); mCachedSpriteDict.Remove(resName); } } #endif var resSearchRule = ResSearchRule.Allocate(resName); var res = ResMgr.Instance.GetRes(resSearchRule); resSearchRule.Recycle2Cache(); if (res == null) { return; } if (mWaitLoadList.Remove(res)) { --mLoadingCount; if (mLoadingCount == 0) { mListener = null; } } if (mResList.Remove(res)) { res.UnRegisteResListener(OnResLoadFinish); res.Release(); ResMgr.Instance.ClearOnUpdate(); } }
private void Add2Load(ResSearchRule resSearchRule, Action <bool, IRes> listener = null, bool lastOrder = true) { var res = FindResInArray(mResList, resSearchRule); if (res != null) { if (listener != null) { AddResListenerRecord(res, listener); res.RegisteResListener(listener); } return; } res = ResMgr.Instance.GetRes(resSearchRule, true); if (res == null) { return; } if (listener != null) { AddResListenerRecord(res, listener); res.RegisteResListener(listener); } //无论该资源是否加载完成,都需要添加对该资源依赖的引用 var depends = res.GetDependResList(); if (depends != null) { foreach (var depend in depends) { var searchRule = ResSearchRule.Allocate(depend); Add2Load(searchRule); searchRule.Recycle2Cache(); } } AddRes2Array(res, lastOrder); }
public ABUnit GetABUnit(string assetName) { var resSearchRule = ResSearchRule.Allocate(assetName); AssetData data = GetAssetData(resSearchRule); resSearchRule.Recycle2Cache(); if (data == null) { return(null); } if (mABUnitArray == null) { return(null); } return(mABUnitArray[data.AssetBundleIndex]); }
protected void UnHoldDependRes() { var depends = GetDependResList(); if (depends == null || depends.Length == 0) { return; } for (var i = depends.Length - 1; i >= 0; --i) { var resSearchRule = ResSearchRule.Allocate(depends[i]); var res = ResMgr.Instance.GetRes(resSearchRule, false); resSearchRule.Recycle2Cache(); if (res != null) { res.Release(); } } }
public bool IsDependResLoadFinish() { var depends = GetDependResList(); if (depends == null || depends.Length == 0) { return(true); } for (var i = depends.Length - 1; i >= 0; --i) { var resSearchRule = ResSearchRule.Allocate(depends[i]); var res = ResMgr.Instance.GetRes(resSearchRule, false); resSearchRule.Recycle2Cache(); if (res == null || res.State != ResState.Ready) { return(false); } } return(true); }