public AssetBundleResource GetAssetBundle(ref string strResourceName, LoadFinishDelegate callBack, object custumParam = null, TaskPriority ePriority = TaskPriority.TaskPriority_Immediate, IResource.ResourceCacheLevel rcl = IResource.ResourceCacheLevel.ResourceCacheLevel_1) { ResourceManagerImpl mgr = GetMgr(IResource.EResourceType.EResourceType_AssetBundle); return((AssetBundleResource)mgr.GetResource(IResource.EResourceType.EResourceType_AssetBundle, ref strResourceName, callBack, custumParam, rcl, ePriority)); }
public TextureResource GetTexture(ref string strResourceName, LoadFinishDelegate callBack, object custumParam = null, TaskPriority ePriority = TaskPriority.TaskPriority_Normal, IResource.ResourceCacheLevel rcl = IResource.ResourceCacheLevel.ResourceCacheLevel_1) { ResourceManagerImpl mgr = GetMgr(IResource.EResourceType.EResourceType_Texture); return((TextureResource)mgr.GetResource(IResource.EResourceType.EResourceType_Texture, ref strResourceName, callBack, custumParam, rcl, ePriority)); }
// 资源释放 virtual public void Destroy() { if (m_objRes != null) { GameObject.DestroyImmediate(m_objRes, true); m_objRes = null; Utility.Log.Trace("Destroy {0}", m_strResName); } loadFinishCallBack = null; // 清空回调聊表 }
/// <summary> /// 资源加载完毕 /// </summary> virtual public void OnFinish() { if (loadFinishCallBack != null) { Delegate[] delegates = loadFinishCallBack.GetInvocationList(); if (delegates == null) { return; } for (int i = 0; i < delegates.Length; i++) { LoadFinishDelegate dele = (LoadFinishDelegate)delegates[i]; // Profiler.BeginSample(dele.Method.DeclaringType.FullName + "->" + dele.Method.Name); dele.Invoke(this, m_strResName, customParams[i]); //Profiler.EndSample(); } loadFinishCallBack = null; customParams.Clear(); } }
////////////////////////////////////////////////////////////////////////// /// 方法 /// <summary> /// 加载资源 /// </summary> /// <param name="eType">资源类型</param> /// <param name="strResourceName">资源名称</param> /// <param name="callBack">加载完成回调</param> /// <param name="custemParam">自定义参数</param> /// <param name="rcl">资源缓存等级</param> /// <returns></returns> public IResource GetResource(IResource.EResourceType eType, ref string strResourceName, LoadFinishDelegate callBack, object custumParam = null, IResource.ResourceCacheLevel rcl = IResource.ResourceCacheLevel.ResourceCacheLevel_NULL, TaskPriority ePriority = TaskPriority.TaskPriority_Normal) { if (strResourceName == null) { return(null); } strResourceName = strResourceName.ToLower(); IResource res = null; if (!m_mapResource.TryGetValue(strResourceName, out res)) { if (m_mapIdleResource.TryGetValue(strResourceName, out res)) { m_mapResource.Add(strResourceName, res); m_mapIdleResource.Remove(strResourceName); } } if (res != null) { res.AddRef(); // 缓存等级修正 if (rcl > res.m_eResourceCacheLevel) { res.m_eResourceCacheLevel = rcl; } if (res.m_eState == IResource.EResourceState.EResourceState_Complete) { res.loadFinishCallBack += callBack; res.customParams.Add(custumParam); if (ePriority == TaskPriority.TaskPriority_Immediate) { res.OnFinish(); } else { m_lstCompleteResource.Add(res); } } else { res.loadFinishCallBack += callBack; res.customParams.Add(custumParam); } } else { /// 根据资源后缀名称判定资源类型 res = ResourceManager.Instance().CreateResource(eType, this, ePriority); m_mapResource[strResourceName] = res; res.m_strResName = strResourceName; res.m_strResFileName = strResourceName; res.m_eState = IResource.EResourceState.EResourceState_Loading; res.m_objRes = null; res.m_eResourceCacheLevel = rcl; res.loadFinishCallBack += callBack; res.customParams.Add(custumParam); // 投递资源加载 res.LoadRes(); } return(res); }