示例#1
0
 public void Reset()
 {
     m_CallBackList.Clear();
     m_Crc      = 0;
     m_Path     = "";
     m_Sprite   = false;
     m_Priority = ELoadResPriority.RES_SLOW;
 }
示例#2
0
    /// <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);
    }
示例#3
0
    /// <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);
    }
示例#4
0
    /// <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);
    }