Example #1
0
    /// <summary>
    /// 用于ObjectManager异步加载接口
    /// </summary>
    public void AsyncLoadResObj(string path, ResourceObject resObj, OnAsyncResFinshCallBack resLoadCallBack)
    {
        ResourceItem item = GetCacheResourceItem(resObj.m_Crc);

        if (item != null)
        {
            resObj.m_ResItem = item;
            resLoadCallBack?.Invoke(path, resObj, resObj.m_Param1, resObj.m_Param2, resObj.m_Param3);
            resLoadCallBack = null;
            return;
        }

        //判断当前要加载的资源是否已存在加载列表中,不存在,则加入加载列表
        AsyncLoadResParam param = null;

        if (!m_LoadingAssetDict.TryGetValue(resObj.m_Crc, out param) || param == null)
        {
            param            = m_AsyncLoadResPool.Spawn();
            param.m_Crc      = resObj.m_Crc;
            param.m_Path     = path;
            param.m_Priority = resObj.m_LoadPriority;
            m_LoadingAssetDict.Add(resObj.m_Crc, param);
            m_LoadAsyncResList[(int)resObj.m_LoadPriority].Add(param);
        }
        //回调列表里添加回调
        AsyncCallBack asyncCallBack = m_AsyncCallBackPool.Spawn();

        asyncCallBack.resObj           = resObj;
        asyncCallBack.resFinshCallBack = resLoadCallBack;
        param.callBackList.Add(asyncCallBack);
    }
Example #2
0
 public void Reset()
 {
     finishCallBack   = null;
     resFinshCallBack = null;
     resObj           = null;
     param1           = null;
     param2           = null;
     param3           = null;
 }