Exemplo n.º 1
0
    public void LoadComplete()
    {
        //如果异步加载,则会产生CreateRequest,如果同步加载,则已直接为成型AssetBundle,不用再处理
        if (CreateRequest != null && CreateRequest.isDone)
        {
            if (!string.IsNullOrEmpty(CreateRequest.error))
            {
                Log.E(ELogTag.ResourceSys, CreateRequest.url + CreateRequest.error);
                return;
            }

            try
            {
                AssetBundle = CreateRequest.assetBundle;
            }
            catch (Exception)
            {
                Log.F(ELogTag.ResourceSys, Url + " load done , but assetBundle is null");
                return;
            }
        }

        //如果这是一个依赖包
        if (AssetBundle != null && IsDependency)
        {
            DependenManager.OnDenpendentLoadComplete(this);
        }
    }
Exemplo n.º 2
0
    // This private method should be called after init
    void download(BundleRequest request)
    {
        if (isDownloadingWWW(request.Url) || _succeedRequest.ContainsKey(request.Url))
        {
            return;
        }

        if (isBundleUrl(request.Url))
        {
            string bundleName = Path.GetFileNameWithoutExtension(request.Url);
            if (!BundleConfigManager.BundleDataDict.ContainsKey(bundleName))
            {
                Debug.LogError("Cannot download bundle [" + bundleName + "]. It's not in the bundle config.");
                return;
            }

            List <string> dependlist = getDependList(bundleName);

            //遍历依赖包
            foreach (string bundle in dependlist)
            {
                string depBundleUrl = formatUrl(bundle);

                //如果依赖包还未加载,并且没有在处理,则进行加载
                if (!_processingRequest.ContainsKey(depBundleUrl) && !_succeedRequest.ContainsKey(depBundleUrl))
                {
                    BundleRequest dependRequest = new BundleRequest();
                    dependRequest.Url      = depBundleUrl;
                    dependRequest.priority = dependRequest.bundleData.priority;

                    //处理依赖
                    dependRequest.IsDependency = true;
                    DependenManager.AddWattingThisDependent(request.bundleData, dependRequest);

                    addRequestToWaitingList(dependRequest);
                }
                //未加载完成,目前正在加载中
                else if (_processingRequest.ContainsKey(depBundleUrl))
                {
                    //进行依赖登记
                    DependenManager.AddWattingThisDependent(request.bundleData, _processingRequest[depBundleUrl]);
                }
                //已经加载完成
                else if (_succeedRequest.ContainsKey(depBundleUrl))
                {
                    //直接加载依赖
                    DependenManager.LoadDependent(request.bundleData, _succeedRequest[depBundleUrl]);
                }
            }

            if (request.priority == -1)
            {
                request.priority = request.bundleData.priority;                  // User didn't change the default priority
            }
            addRequestToWaitingList(request);
        }
        else
        {
            if (request.priority == -1)
            {
                request.priority = 0;                 // User didn't give the priority
            }
            addRequestToWaitingList(request);
        }
    }