Exemplo n.º 1
0
    /// <summary>
    /// 同步加载资源
    /// </summary>
    /// <param name="resourceName"></param>
    /// <returns></returns>
    public GameObject Load(string resourceName)
    {
        if (_resourceLoadState == ResourceLoadStateType.Loading)
        {
            Debug.Log("An resource is loading, Please wait!");
            return(null);
        }

        ResourceRequest resourceRequest = null;

        if (_resourceRequestDict.TryGetValue(resourceName, out resourceRequest))
        {
            _resourceLoadState = ResourceLoadStateType.Loading;
            resourceRequest.Load();
        }
        else
        {
            ResourceInfo resourceInfo;
            if (_resourceInfoDict.TryGetValue(resourceName, out resourceInfo))
            {
                resourceRequest = new ResourceRequest();
                resourceRequest.Init(resourceInfo);

                resourceRequest.Load();
            }
            else
            {
                Debug.Log(string.Format("No resource named {0} found!", resourceName));
            }
        }
        return(resourceRequest.Resource);
    }
Exemplo n.º 2
0
    void  StartSingleLineLoad()
    {
        if (_prefabLoadRequestList.Count <= 0)
        {
            return;
        }

        if (_state == ResourceLoadStateType.Loading)
        {
            return;
        }

        var request    = _prefabLoadRequestList[0];
        var prefabName = request.PrefabName;
        var callBack   = request.CallBack;

        _prefabLoadRequestList.Remove(request);
        PoolManager.GetInstance().ReleaseObject <SingleLineResource> ("SingleLineResource", request);

        ResourceRequest prefabRequest = null;

        if (_resourceRequestDict.TryGetValue(prefabName, out prefabRequest))
        {
            _state = ResourceLoadStateType.Loading;
            prefabRequest.Load(callBack);
        }
        else
        {
            Debug.LogWarning("Couldn't find prefabRequest " + prefabName);
        }
    }
Exemplo n.º 3
0
    IEnumerator LoadCoroutine(ResourceInfo resourceInfo, OnResourceLoadFinished callback)
    {
        ResourceLoadState = ResourceLoadStateType.Loading;

        Object resource;

        if (resourceInfo.isFromAssetBundle)
        {
            var assetbundlePath = string.Format("{0}{1}/{2}{3}", Application.streamingAssetsPath, PREFIX_ASSETBUNDLE_PATH, resourceInfo.assetbundlePath, SUFFIX_ASSETBUNDLE_PATH);
            WWW www             = new WWW(assetbundlePath);
            yield return(www);

            var bundle  = www.assetBundle;
            var request = bundle.LoadAssetAsync <GameObject>(resourceInfo.resourceName);
            yield return(request);

            resource = request.asset;
            bundle.Unload(false);
        }
        else
        {
            var request = Resources.LoadAsync(resourceInfo.resourcePath);
            yield return(request);

            resource = request.asset;
        }

        _resourceDict.Add(resourceInfo.resourceName, resource);

        LoadAsyncFinished(resource, callback);
    }
Exemplo n.º 4
0
    void  StartSingleLineLoad()
    {
        if (_prefabLoadList.Count <= 0)
        {
            return;
        }

        if (_state == ResourceLoadStateType.Loading)
        {
            return;
        }

        var           res        = _prefabLoadList[0];
        PrefabRequest prefabReq  = null;
        var           prefabName = res.PrefabName;
        var           callBack   = res.CallBack;

        _prefabLoadList.Remove(res);

        if (HasPrefabRequest(prefabName, out prefabReq))
        {
            _state = ResourceLoadStateType.Loading;
            prefabReq.Load(callBack);
        }
        else
        {
            Debug.LogWarning("Couldn't find prefabRequest " + prefabName);
        }
    }
Exemplo n.º 5
0
    void LoadAsyncFinished(Object resource, OnResourceLoadFinished callback)
    {
        if (callback != null)
        {
            callback(resource);
        }

        ResourceLoadState = ResourceLoadStateType.Finished;
    }
Exemplo n.º 6
0
    void  StartLoadAsync()
    {
        if (_asyncResourceRequestList.Count <= 0)
        {
            return;
        }

        if (_resourceLoadState == ResourceLoadStateType.Loading)
        {
            return;
        }

        var asyncRequest = _asyncResourceRequestList[0];
        var resourceName = asyncRequest.ResourceName;
        var callBack     = asyncRequest.CallBack;

        _asyncResourceRequestList.Remove(asyncRequest);

        ResourceRequest resourceRequest = null;

        if (_resourceRequestDict.TryGetValue(resourceName, out resourceRequest))
        {
            _resourceLoadState = ResourceLoadStateType.Loading;
            resourceRequest.LoadAsync(callBack);
        }
        else
        {
            ResourceInfo resourceInfo;
            if (_resourceInfoDict.TryGetValue(resourceName, out resourceInfo))
            {
                resourceRequest = new ResourceRequest();
                resourceRequest.Init(resourceInfo);

                _resourceLoadState = ResourceLoadStateType.Loading;
                resourceRequest.LoadAsync(callBack);
            }
            else
            {
                Debug.Log(string.Format("No resource named {0} found!", resourceName));
            }
        }
    }