Example #1
0
        // 这个简单一点,就不加正在加载的判断了。
        IEnumerator RealLoadResource(string resName, Type type, OnResourceLoaded onLoaded)
        {
            // 直接从Resource 里面加载
            ResourceRequest request = Resources.LoadAsync(resName, type);

            yield return(request);

            onLoaded(request.asset);
        }
Example #2
0
        public static List <CsvRow> ParseCSV(string strContent, OnResourceLoaded onResourceLoaded = null, bool isRequest = false)
        {
            string        text = strContent;
            List <CsvRow> rows = ParseText(text);

            if (null != onResourceLoaded)
            {
                onResourceLoaded(rows);
            }
            return(rows);
        }
Example #3
0
        IEnumerator  LoadAssetBundle(string assName, string resName, Type type, OnResourceLoaded onLoaded)
        {
            yield return(m_helper.TryStartCoroutine(RealLoadAsseBundle(assName, false)));

            // wait all dependcies over ----
            AssetBundleInfo _info = null;

            while ((_info = GetLoadedAssetBundle(assName)) == null)
            {
                yield return(0);
            }
            // load object and call function-------
            m_helper.TryStartCoroutine(LoadAsset(_info, resName, type, onLoaded));
        }
Example #4
0
        public virtual async UniTask <IReadOnlyCollection <Resource <TResource> > > LoadAllAsync(string path = null)
        {
            var result     = new List <Resource <TResource> >();
            var addedPaths = new HashSet <string>();
            var loadTasks  = new List <UniTask <Resource <TResource> > >();
            var loadData   = new Dictionary <string, (ProvisionSource, string)>();

            foreach (var source in ProvisionSources)
            {
                var fullPath             = source.BuildFullPath(path);
                var locatedResourcePaths = await source.Provider.LocateResourcesAsync <TResource>(fullPath);

                foreach (var locatedResourcePath in locatedResourcePaths)
                {
                    var localPath = source.BuildLocalPath(locatedResourcePath);

                    if (addedPaths.Contains(localPath))
                    {
                        continue;
                    }
                    else
                    {
                        addedPaths.Add(localPath);
                    }

                    if (IsLoaded(localPath))
                    {
                        result.Add(GetLoadedOrNull(localPath));
                        continue;
                    }

                    loadTasks.Add(source.Provider.LoadResourceAsync <TResource>(locatedResourcePath));
                    loadData[locatedResourcePath] = (source, localPath);
                }
            }

            var resources = await UniTask.WhenAll(loadTasks);

            foreach (var resource in resources)
            {
                var(source, localPath) = loadData[resource.Path];
                LoadedResources.Add(new LoadedResource(resource, source));
                OnResourceLoaded?.Invoke(localPath);
                result.Add(resource);
            }

            return(result);
        }
Example #5
0
 public static void LoadResource(string assetPath, ResourcePathType pathType, OnResourceLoaded onResourceLoaded)
 {
     if (pathType == ResourcePathType.Resource)
     {
         UnityEngine.Object obj = Resources.Load(assetPath);
         if (onResourceLoaded != null)
         {
             onResourceLoaded(obj);
         }
     }
     else if (pathType == ResourcePathType.Persistant)
     {
         WaitLoadStruct tStruct = new WaitLoadStruct();
         tStruct.assetPath        = assetPath;
         tStruct.onResourceLoaded = onResourceLoaded;
         waitToLoadList.Add(tStruct);
     }
 }
Example #6
0
        // just like LoadResource("ui_hero","ui_hero",GameObject,onLoaded);  LoadResource("ui_hero","ui_hero",GameObject,onLoaded);
        public void LoadResource(string assName, string resName, Type type, OnResourceLoaded onLoaded)
        {
            // add a request -----
            if (string.IsNullOrEmpty(assName))
            {
                // load resource ---
                m_helper.TryStartCoroutine(RealLoadResource(resName, type, onLoaded));
            }
            else // load asset
            {
                // 如果loaded 了----- 是否应该直接load 呢--- i think so -------- 写到里面可以统一,似乎,回头再想想 ---
                AssetBundleInfo ab = GetLoadedAssetBundle(assName);
                if (ab != null)
                {
                    m_helper.TryStartCoroutine(LoadAsset(ab, resName, type, onLoaded));
                    return;
                }

                LoadAssetRequest request = m_loadRequestPool.Get();
                request.assetType = type;
                request.resName   = resName;
                request.onLoaded  = onLoaded;

                XList <LoadAssetRequest> requests = null;
                if (!m_LoadRequests.TryGetValue(assName, out requests))
                {
                    requests = GetRequestList();
                    requests.Add(request);
                    m_LoadRequests.Add(assName, requests);
                    m_helper.TryStartCoroutine(LoadAssetBundle(assName, resName, type, onLoaded));
                }
                else
                {
                    requests.Add(request);
                }
            }
        }
Example #7
0
        public virtual async UniTask <Resource <TResource> > LoadAsync(string path)
        {
            if (IsLoaded(path))
            {
                return(GetLoadedOrNull(path));
            }

            foreach (var source in ProvisionSources)
            {
                var fullPath = source.BuildFullPath(path);
                if (!await source.Provider.ResourceExistsAsync <TResource>(fullPath))
                {
                    continue;
                }

                var resource = await source.Provider.LoadResourceAsync <TResource>(fullPath);

                LoadedResources.Add(new LoadedResource(resource, source));
                OnResourceLoaded?.Invoke(path);
                return(resource);
            }

            return(Resource <TResource> .Invalid);
        }
Example #8
0
 private static void Internal_onResourceLoaded(RRefBase p0)
 {
     OnResourceLoaded?.Invoke(p0);
 }
Example #9
0
 public void OnPush()
 {
     assetType = null;
     resName   = "";
     onLoaded  = null;
 }
Example #10
0
        IEnumerator LoadAsset(AssetBundleInfo assetBundle, string resName, Type type, OnResourceLoaded onLoaded)
        {
            if (assetBundle == null || assetBundle.GetAssetBundle() == null)
            {
                onLoaded(null);
                yield break;
            }
            AssetBundleRequest request = assetBundle.GetAssetBundle().LoadAssetAsync(resName, type);

            yield return(request);

            onLoaded(request.asset);
            assetBundle.AddReferenceCount();
        }