public void Reset() { m_CallBackList.Clear(); m_Crc = 0; m_Path = ""; m_Sprite = false; m_Priority = ELoadResPriority.RES_SLOW; }
/// <summary> /// 异步对象加载 /// </summary> /// <param name="path"></param> /// <param name="fealFinish"></param> /// <param name="priority"></param> /// <param name="setSceneObject"></param> /// <param name="param1"></param> /// <param name="param2"></param> /// <param name="param3"></param> /// <param name="bClear"></param> public long InstantiateObjectAsync(string path, OnAsyncObjFinish dealFinish, ELoadResPriority priority, bool setSceneObject = false, object param1 = null, object param2 = null, object param3 = null, bool bClear = true) { if (string.IsNullOrEmpty(path)) { return(0); } uint crc = CRC32.GetCRC32(path); ResourceObj resObj = GetObjectFromPool(crc); if (resObj != null) { if (setSceneObject) { resObj.m_CloneObj.transform.SetParent(SceneTrs, false); } if (dealFinish != null) { dealFinish(path, resObj.m_CloneObj, param1, param2, param3); } return(resObj.m_Guid); } long guid = ResourceManager.Instance.CreateGuid(); m_AsyncResObjs.Add(guid, resObj); resObj = m_ResourceObjClassPool.Spawn(true); resObj.m_Crc = crc; resObj.m_SetSceneParent = setSceneObject; resObj.m_bClear = bClear; resObj.m_DealFinis = dealFinish; resObj.m_Param1 = param1; resObj.m_Param2 = param2; resObj.m_Param3 = param3; //调用ResourceManager的异步加载接口 ResourceManager.Instance.AsyncLoadResource(path, resObj, OnLoadResourceObjFinish, priority); return(guid); }
/// <summary> /// 异步加载资源 (仅仅是不需要实例化得资源 比如音频 图片等) /// </summary> public void AsyncLoadResource(string path, OnAsyncObjFinish dealFinish, ELoadResPriority priority, bool isSprite = false, object param1 = null, object param2 = null, object param3 = null, uint crc = 0) { if (crc == 0) { crc = CRC32.GetCRC32(path); } ResourceItem item = GetCacheResourceItem(crc); if (item != null) { if (dealFinish != null) { dealFinish(path, item.m_Obj, param1, param2, param3); } return; } //判断是否在加载中 AsyncLoadResParam param = null; if (!m_LoadingAssetDic.TryGetValue(crc, out param) || param == null) { param = m_AsyncLoadResParamPool.Spawn(true); param.m_Crc = crc; param.m_Path = path; param.m_Sprite = isSprite; param.m_Priority = priority; m_LoadingAssetDic.Add(crc, param); m_LoadingAssetList[(int)priority].Add(param); } //往回调列表里加回调 AsyncCallBack callBack = m_AsyncCallBackPool.Spawn(true); callBack.m_DealObjFinish = dealFinish; callBack.m_Param1 = param1; callBack.m_Param2 = param2; callBack.m_Param3 = param3; param.m_CallBackList.Add(callBack); }
/// <summary> /// 针对ObjectManager的异步加载接口 /// </summary> /// <param name="path"></param> /// <param name="resObj"></param> /// <param name="deadfinish"></param> /// <param name="priority"></param> public void AsyncLoadResource(string path, ResourceObj resObj, OnAsyncFinish deadfinish, ELoadResPriority priority) { ResourceItem item = GetCacheResourceItem(resObj.m_Crc); if (item != null) { resObj.m_ResItem = item; if (deadfinish != null) { deadfinish(path, resObj); } return; } //判断是否在加载中 AsyncLoadResParam para = null; if (!m_LoadingAssetDic.TryGetValue(resObj.m_Crc, out para) || para == null) { para = m_AsyncLoadResParamPool.Spawn(true); para.m_Crc = resObj.m_Crc; para.m_Path = path; para.m_Priority = priority; m_LoadingAssetDic.Add(resObj.m_Crc, para); m_LoadingAssetList[(int)priority].Add(para); } //往回调列表里面加回调 AsyncCallBack callBack = m_AsyncCallBackPool.Spawn(true); callBack.m_DealFinish = deadfinish; callBack.m_ResObj = resObj; para.m_CallBackList.Add(callBack); }