コード例 #1
0
        /// <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);
        }
コード例 #2
0
 public void LoadAssetAsync(string assetName, AssetLoadFinishedEventHandler <Object> callback, bool bStart = false)
 {
     this.AddAssetTask(assetName, callback);
     if (bStart)
     {
         this.StartLoad();
     }
 }
コード例 #3
0
 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();
     }
 }
コード例 #4
0
 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();
     }
 }
コード例 #5
0
        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;
        }
コード例 #6
0
        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;
        }
コード例 #7
0
 //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);
     }
 }
コード例 #8
0
 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);
     }
 }
コード例 #9
0
 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);
     }
 }
コード例 #10
0
 public void SetLoadFinishedHandler(AssetLoadFinishedEventHandler handler)
 {
     this.handler = handler;
 }
コード例 #11
0
 public override void SetCallback(Delegate callback)
 {
     this.Callback = callback as AssetLoadFinishedEventHandler <T>;
 }