Пример #1
0
    /// <summary>
    /// 把资源列表加入指定块中,并且返回需下载的资源列表.
    /// 保证如果存在块中,这个资源必然已经加载或者正在加载中.
    /// </summary>
    /// <param name="chunk">Chunk.</param>
    /// <param name="resArray">过滤后需要下载的列表</param>

    private void PushResources(ResourcesChunkData chunkData, ref List <string> resArray)
    {
        for (int i = resArray.Count - 1; i >= 0; i--)
        {
            if (!chunkData.resHash.Contains(resArray[i]))
            {
                int deleteIndex;

                //  如果有缓存不用加入
                if (mCacheData.ContainsKey(resArray[i]))
                {
                    mCacheData[resArray[i]].AddReference();
                    chunkData.resHash.Add(resArray[i]);
                    resArray.RemoveAt(i);
                }
                else if (FindInDelete(resArray[i], out deleteIndex))
                {
                    ResourcesData data = ActivateDeleteCache(deleteIndex);
                    data.AddReference();
                    mCacheData.Add(data.Name, data);
                    chunkData.resHash.Add(resArray[i]);
                    resArray.RemoveAt(i);
                }
                else
                {
                    mCacheData.Add(resArray[i], new ResourcesData(resArray[i]));
                    chunkData.resHash.Add(resArray[i]);
                }
            }
            else
            {
                resArray.RemoveAt(i);
            }
        }
    }
Пример #2
0
    /// <summary>
    /// 一个原子资源加载完成
    /// </summary>
    /// <param name="www"></param>

    private void OnLoadCompleted(WaitForWww www)
    {
        string        name    = Path.GetFileNameWithoutExtension(www.Url);
        ResourcesData resData = null;

        if (mCacheData.TryGetValue(name, out resData))
        {
            resData.IsLoad = true;

            if (www.mState == WaitState.Done)
            {
                resData.AddReference();
                resData.Bundle = www.Www.assetBundle;
            }
            else
            {
                Debug.LogError(string.Format("Load Fail : {0} [{1}]", name, www.Url));
            }
        }
        else
        {
            Debug.LogError(string.Format("Can't find name : {0} [{1}]", name, www.Url));
        }
    }