/// <summary> /// 创建需要加载的LocalAssetResource,如果存在就获取,添加到下载链表中 /// </summary> /// <param name="resource"></param> /// <param name="handler"></param> /// <param name="assetPRI"></param> /// <returns></returns> public LocalAssetResource CreateAssetResource(ResourceData resource, AssetLoadFinishedEventHandler handler, AssetPRI assetPRI) { if (resource == null) { return(null); } string mPath = resource.mPath; string key = Path.GetFileNameWithoutExtension(mPath).ToLower();//获取文件名,不包括扩展名 LocalAssetResource assetResource = new LocalAssetResource(resource); if (!this.m_dicAssetResoure.ContainsKey(key))//如果不包含这个资源,就创建资源然后添加到资源集合中 { assetResource = new LocalAssetResource(resource); assetResource.PRIType = assetPRI; this.m_dicAssetResoure.Add(key, assetResource); if (this.m_allLoadFinishedEventHandler != null) { this.m_total += assetResource.Size; } Debug.Log(assetResource.URL + "添加到下载链表!"); this.m_linkedListNeedToLoad.AddLast(assetResource);//把需要加载的资源添加到链表的最后 } else { assetResource = this.m_dicAssetResoure[key]; Debug.Log("之前已经加载过了:" + assetResource.URL); } if (handler != null && !assetResource.Canceled)//设置加载完成之后的委托 { assetResource.SetLoadFinishedHandler((AssetLoadFinishedEventHandler)Delegate.Combine(assetResource.GetLoadFinishedHandler(), handler)); } return(assetResource); }
public void LoadAssetAsync(string assetName, AssetLoadFinishedEventHandler <Object> callback, bool bStart = false) { this.AddAssetTask(assetName, callback); if (bStart) { this.StartLoad(); } }
public void LoadSceneAsync(string sceneName, AssetLoadFinishedEventHandler <SceneInstance> callback, LoadSceneMode mode, bool bStart = false) { //this.m_eCurAssetType = EAssetType.Scene; //this.LoadSceneAsync(sceneName, callback,addtive,false); this.AddSceneTask(sceneName, mode, callback); if (bStart) { this.StartLoad(); } }
public void LoadGameObjectAsync(string objPath, AssetLoadFinishedEventHandler <GameObject> callback, bool bStart = false) { //this.m_eCurAssetType = EAssetType.None; //this.LoadGameObjectAsyn(objPath, callback,false); this.AddGameObjectTask(objPath, callback); if (bStart) { this.StartLoad(); } }
public void AddAssetTask(string objPath, AssetLoadFinishedEventHandler <Object> callback) { var task = new ResourceLoadTask <Object>(); task.Path = objPath; task.Callback = callback; task.AssetType = EAssetType.Asset; this.m_queueTasks.Enqueue(task); this.m_iAllAssetsNum++; this.m_eCurAssetType = EAssetType.None; }
public void AddSceneTask(string objPath, LoadSceneMode mode, AssetLoadFinishedEventHandler <SceneInstance> callback) { var task = new SceneResourceTask <SceneInstance>(); task.Path = objPath; task.Callback = callback; task.AssetType = EAssetType.Scene; task.LoadSceneMode = mode; this.m_queueTasks.Enqueue(task); this.m_iAllAssetsNum++; this.m_eCurAssetType = EAssetType.None; }
//public void LoadAsset<T>(string assetName, AssetLoadFinishedEventHandler<T> callback)where T:Object //{ // //this.m_eCurAssetType = EAssetType.Asset; // //this.LoadAsssetAsync<T>(assetName, callback,false); // this.AddAssetTask<T>(assetName, callback); //} //private async void LoadAsssetAsync<T>(string assetName, AssetLoadFinishedEventHandler<T> callback,bool bCheck = true) where T : Object //{ // try // { // this.m_oLoadObjectOperation = Addressables.LoadAssetAsync<Object>(assetName); // var obj = await this.m_oLoadObjectOperation.Task as T; // if (bCheck) // { // this.CheckFinishedLoad(); // this.StartLoadTaskAsset(); // } // callback?.Invoke(obj); // } // catch (Exception e) // { // Debug.LogException(e); // } //} private async void LoadAsssetAsync(string assetName, AssetLoadFinishedEventHandler <Object> callback, bool bCheck = true) { try { this.m_oLoadObjectOperation = Addressables.LoadAssetAsync <Object>(assetName); var obj = await this.m_oLoadObjectOperation.Task; if (bCheck) { this.CheckFinishedLoad(); this.StartLoadTaskAsset(); } callback?.Invoke(obj); } catch (Exception e) { Debug.LogException(e); } }
private async void InnerLoadSceneAsync(string sceneName, AssetLoadFinishedEventHandler <SceneInstance> callback, LoadSceneMode mode, bool bCheck = true) { try { this.m_oLoadSceneOperation = Addressables.LoadSceneAsync(sceneName, mode); var scene = await this.m_oLoadSceneOperation.Task; if (bCheck) { this.CheckFinishedLoad(); this.StartLoadTaskAsset(); } callback?.Invoke(scene); } catch (Exception e) { Debug.LogException(e); } }
private async void LoadGameObjectAsyn(string objPath, AssetLoadFinishedEventHandler <GameObject> callback, bool bCheck = true) { try { this.m_oLoadGameObjectOperation = Addressables.InstantiateAsync(objPath, Vector3.zero, Quaternion.identity); var obj = await this.m_oLoadGameObjectOperation.Task; //Debug.Log(objPath); if (bCheck) { this.CheckFinishedLoad(); this.StartLoadTaskAsset(); } callback?.Invoke(obj); } catch (Exception e) { Debug.LogException(e); } }
public void SetLoadFinishedHandler(AssetLoadFinishedEventHandler handler) { this.handler = handler; }
public override void SetCallback(Delegate callback) { this.Callback = callback as AssetLoadFinishedEventHandler <T>; }