Пример #1
0
    public bool CancelLoadAsset(ResObj resObj)
    {
        AsyncLoadResTask task = null;

        if (loadingAssetTaskDic.TryGetValue(resObj.CRC, out task))
        {
            for (int i = task.FinishActionList.Count; i >= 0; --i)
            {
                var action = task.FinishActionList[i];
                if (action != null && task.Param is ResObj && task.Param == resObj)
                {
                    action.Reset();
                    asyncFinishActionPool.Recycle(action);
                    task.FinishActionList.Remove(action);
                }
            }

            if (task.FinishActionList.Count == 0)
            {
                loadingAssetTaskDic.Remove(resObj.CRC);
                loadingAssetTaskList[(int)task.Priority].Remove(task);
                task.Reset();
                asyncLoadTaskPool.Recycle(task);
            }

            return(true);
        }

        return(false);
    }
Пример #2
0
    public void AsyncLoadAsset(string path, Action <string, Object, object> finishAction, ResPriority priority, bool isSprite = false, object param = null)
    {
        if (string.IsNullOrEmpty(path))
        {
            return;
        }

        if (finishAction == null)
        {
            Debug.LogWarningFormat("load {0} finishAction is null", path);
            return;
        }
        var crc       = CRC32.GetCRC32(path);
        var cacheItem = GetCacheResItem(crc);

        if (cacheItem != null)
        {
            finishAction(path, cacheItem.obj, param);
            return;
        }

        AsyncLoadResTask task = null;

        if (!loadingAssetTaskDic.TryGetValue(crc, out task))
        {
            task          = asyncLoadTaskPool.Spawn(true);
            task.CRC      = crc;
            task.Path     = path;
            task.IsSprite = isSprite;
            task.Priority = priority;
            loadingAssetTaskDic.Add(crc, task);
            loadingAssetTaskList[(int)priority].Add(task);
        }
        var aFinishAction = asyncFinishActionPool.Spawn(true);

        aFinishAction.FinishAction = finishAction;
        aFinishAction.Param        = param;
        task.FinishActionList.Add(aFinishAction);
    }