コード例 #1
0
 /// <summary>
 /// 同步加载Resources 资源
 /// </summary>
 /// <param name="url"></param>
 /// <param name="resourcesLoader"></param>
 private void LoadAssetSync(string url, ResourcesLoader resourcesLoader)
 {
     m_ResourcesUrl = url;
     ResultObj      = Resources.Load(url);
     if (ResultObj == null)
     {
         resourcesLoader.OnCompleteLoad(true, string.Format("[ResourcesLoader]  Load Resource Asset Fail,Not Exit {0} ", url), null, true);
     }
     else
     {
         resourcesLoader.OnCompleteLoad(false, string.Format("[ResourcesLoader]  Load Resource Asset Success: {0}", url), ResultObj, true);
     }
 }
コード例 #2
0
        /// <summary>
        /// 加载Resources 资源
        /// </summary>
        /// <param name="url"></param>
        /// <param name="onCompleteAct"></param>
        ///  <param name="isloadScene"> 如果加载的是场景 则这里必须填true ,否则false</param>
        /// <returns></returns>
        protected static ResourcesLoader LoadResourcesAssetSync(string url, System.Action <BaseAbstracResourceLoader> onCompleteAct, bool isloadScene = false)
        {
            if (string.IsNullOrEmpty(url))
            {
                Debug.LogError(string.Format("Url Can't Be Null , TypeLoader={0}", typeof(WWWLoader)));
                return(null);
            }
            bool            isLoaderExit    = false;
            ResourcesLoader resourcesLoader = ResourcesLoaderMgr.GetOrCreateLoaderInstance <ResourcesLoader>(url, ref isLoaderExit);

            resourcesLoader.m_OnCompleteAct.Add(onCompleteAct);

            if (isLoaderExit && resourcesLoader.IsCompleted)
            {
                resourcesLoader.LoadassetModel = LoadAssetModel.Sync;                                                                  //这里貌似没必要(由于异步加载时候同步加载必定完成了)
                resourcesLoader.OnCompleteLoad(resourcesLoader.IsError, resourcesLoader.Description, resourcesLoader.ResultObj, true); //如果当前加载器已经完成加载 则手动触发事件
                return(resourcesLoader);                                                                                               //如果已经存在 且当前加载器还在加载中,则只需要等待加载完成则回调用回调
            }

            if (resourcesLoader.LoadassetModel == LoadAssetModel.Async)
            {
                resourcesLoader.ForceBreakLoaderProcess();
            }
            resourcesLoader.LoadassetModel       = LoadAssetModel.Sync; //这里貌似没必要(由于异步加载时候同步加载必定完成了)
            resourcesLoader.m_LoadAssetCoroutine = null;
            resourcesLoader.LoadAssetSync(url, resourcesLoader);
            return(resourcesLoader);
        }
コード例 #3
0
        /// <summary>
        /// 异步加载Resources 资源
        /// </summary>
        /// <param name="url"></param>
        /// <param name="resourcesLoader"></param>
        /// <returns></returns>
        private IEnumerator LoadAssetAsync(string url, ResourcesLoader resourcesLoader)
        {
            m_ResourcesUrl = url;
            ResourceRequest resourcesRequest = Resources.LoadAsync(url);

            while (resourcesRequest.isDone == false)
            {
                Process = resourcesRequest.progress;
                yield return(null);
            }

            if (resourcesRequest.asset == null)
            {
                resourcesLoader.OnCompleteLoad(true, string.Format("[ResourcesLoader] Load Resource Asset Fail,Not Exit {0}", url), null, true);
            }
            else
            {
                resourcesLoader.OnCompleteLoad(false, string.Format("[ResourcesLoader]  Load Resource Asset Success: {0}", url), resourcesRequest.asset, true);
            }

            yield break;
        }