/// <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); }
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); } }
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); }
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); } }
void LoadAsyncFinished(Object resource, OnResourceLoadFinished callback) { if (callback != null) { callback(resource); } ResourceLoadState = ResourceLoadStateType.Finished; }
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)); } } }