예제 #1
0
        /** io出错(1:wwwError,2:超时,3:不完整) */
        private void toIoError(int type)
        {
            //把www停了
            if (_www != null)
            {
                _www.Dispose();
                _www = null;
            }

            Ctrl.print("io出错:" + type, _url);

            //本地缓存资源被删除了
            if (_loadMethod == LoadMethodType.Resource && _currentSaveData != null && _currentSaveData.state == ResourceSaveStateType.Downloaded)
            {
                //改成cdn下载
                _currentSaveData.state = ResourceSaveStateType.None;
                ResourceInfoControl.versionModified();
                _useURL    = ResourceInfoControl.getCDNResourcePath(_url, _currentSaveData.version);
                _needCache = true;

                toReload();
            }
            else
            {
                if (_tryForever)
                {
                    //等2秒
                    _tryWaitTime = _ioErrorWaitTime;
                }
                else
                {
                    unload();

                    if (_ioErrorCall != null)
                    {
                        _ioErrorCall();
                    }
                }
            }
        }
예제 #2
0
        /** 执行加载 */
        private void toLoad()
        {
            _needSize = 0;

            switch (_loadMethod)
            {
            case LoadMethodType.Resource:
            {
                if (ShineSetting.debugJumpResourceVersion || ShineSetting.localLoadWithOutBundle)
                {
                    _needSize     = 0;
                    _useURL       = ResourceInfoControl.getStreamingAssetsPath(_url, true);
                    _resourceType = ResourceType.Unknown;
                }
                else
                {
                    if ((_currentSaveData = ResourceInfoControl.getResourceSaveData(_url)) == null)
                    {
                        Ctrl.throwError("不该找不到资源数据", _url);
                        return;
                    }

                    _resourceType = _currentSaveData.getType();
                    bool isBundle = _resourceType == ResourceType.Bundle;

                    _needSize = _currentSaveData.size;

                    //从steamingAsset中加载
                    if (_currentSaveData.state == ResourceSaveStateType.StreamingAssetsReady)
                    {
                        _useURL = ResourceInfoControl.getStreamingAssetsPath(_url, !isBundle);
                    }
                    //从持久化中加载
                    else if (_currentSaveData.state == ResourceSaveStateType.Downloaded)
                    {
                        _useURL = ResourceInfoControl.getPersistentPath(_url, !isBundle);
                    }
                    //需要加载
                    else
                    {
                        _useURL    = ResourceInfoControl.getCDNResourcePath(_url, _currentSaveData.version);
                        _needCache = true;
                    }
                }
            }
            break;

            case LoadMethodType.StreamingAssets:
            {
                _useURL       = ResourceInfoControl.getStreamingAssetsPath(_url, true);
                _resourceType = ResourceType.Unknown;
            }
            break;

            default:
            {
                _useURL       = _url;
                _resourceType = ResourceType.Unknown;
            }
            break;
            }

            _reloadTimes = 0;
            //标记开始加载
            _loadState = LoadState_Loading;

            resetTimeOut();
            toDoLoad();
        }