Exemplo n.º 1
0
        public static IEnumerator Init()
        {
            if (!Application.isPlaying)
            {
                yield break;
            }

            var resManager = FindObjectOfType(typeof(ResourceManager)) as ResourceManager;

            if (resManager == null)
            {
                var gameObj = new GameObject("_ResourceManager");
                resManager = gameObj.AddComponent <ResourceManager>();
                _Instance  = resManager;
            }

            var child = new GameObject("_Pool");

            child.transform.SetParent(resManager.transform, false);
            child.SetActive(false);
            ResourcePoolManager._poolParent = child.transform;

            AsyncImageDownload.Init();

            _lastReleaseTime = Time.time;
            _Instance.StartCoroutine(OnReleaseUnusedAssets());

            if (AppEnv.IsUseAB)
            {
                yield return(BundleManager.InitCoreBundle());
            }
        }
Exemplo n.º 2
0
 public static void UnInitGameResource()
 {
     if (AppEnv.IsUseAB)
     {
         BundleManager.UnInitGameBundle();
     }
     ResourcePoolManager.ClearPools();
 }
Exemplo n.º 3
0
 public static IEnumerator InitGameResource(string gameName)
 {
     if (AppEnv.IsUseAB)
     {
         yield return(BundleManager.InitGameBundle(gameName));
     }
     yield return(1);
 }
Exemplo n.º 4
0
        private static Object LoadAsset(string assetPath, Type type, bool shouldCacheAsset = false)
        {
            if (string.IsNullOrEmpty(assetPath))
            {
                return(null);
            }

            var extensions = ResourceExtensions.GetExtOfType(type);

            foreach (var ext in extensions)
            {
                // 先找缓存
                var          assetPathWithExt = assetPath + ext;
                ResourcePool resourcePool;
                if (ResourcePoolManager._resourcePoolDict.TryGetValue(assetPathWithExt, out resourcePool))
                {
                    (resourcePool.Resource as GameObject).SetActive(true);
                    return(resourcePool.Resource);
                }

                var    hasCached = false;
                Object asset     = null;
                if (!AppEnv.IsUseAB)
                {
#if UNITY_EDITOR
                    asset = AssetManager.LoadFromAssetDatabase(assetPathWithExt, type);
#endif
                }
                else
                {
                    asset = BundleManager.LoadFromAssetBundle(assetPathWithExt, type);
                }

                if (asset == null)
                {
                    continue;
                }

                if (shouldCacheAsset && !hasCached)
                {
                    resourcePool = new ResourcePool(asset, ResourcePoolManager._poolParent);
                    ResourcePoolManager._resourcePoolDict.Add(assetPathWithExt, resourcePool);
                }

                return(asset);
            }

            LogHelper.INFO("ResourceManager", "loading file {0} failed, type {1}", assetPath, type);
            return(null);
        }
Exemplo n.º 5
0
        private static IEnumerator LoadAssetAsync(string assetPath, Type type, Action <int> _CachedDoneCallback, bool shouldCacheAsset = false)
        {
            if (string.IsNullOrEmpty(assetPath))
            {
                yield break;
            }

            var extensions = ResourceExtensions.GetExtOfType(type);

            foreach (var ext in extensions)
            {
                var          assetPathWithExt = assetPath + ext;
                Object       asset            = null;
                ResourcePool resourcePool;
                if (ResourcePoolManager._resourcePoolDict.TryGetValue(assetPathWithExt, out resourcePool))
                {
                    asset = resourcePool.Resource as GameObject;
                    (asset as GameObject).SetActive(true);
                    var obj = InstantiateObject(asset) as GameObject;
                    resourcePool = new ResourcePool(obj, ResourcePoolManager._poolParent);
                    ResourcePoolManager._resourcePoolDict.Add(assetPath, resourcePool);
                    _CachedDoneCallback?.Invoke(ResourcePoolManager._resourcePoolDict.Count);
                    yield break;
                }

                var hasCached = false;
                if (!AppEnv.IsUseAB)
                {
#if UNITY_EDITOR
                    _Instance.StartCoroutine(AssetManager.LoadFromAssetDatabaseAsync(assetPathWithExt, type, resourcePool, shouldCacheAsset, hasCached, _CachedDoneCallback));
#endif
                }
                else
                {
                    _Instance.StartCoroutine(BundleManager.LoadFromAssetBundleAsync(assetPathWithExt, type, resourcePool, shouldCacheAsset, hasCached, _CachedDoneCallback));
                }
            }
        }