public BaseAssetAsyncLoader LoadAssetAsync(string assetPath, System.Type assetType)
        {
#if UNITY_EDITOR
            if (AssetBundleConfig.IsEditorMode)
            {
                string path = AssetBundleUtility.PackagePathToAssetsPath(assetPath);
                UnityEngine.Object target = AssetDatabase.LoadAssetAtPath(path, assetType);
                return new EditorAssetAsyncLoader(target);
            }
#endif

            string assetbundleName = null;
            string assetName = null;
            bool status = MapAssetPath(assetPath, out assetbundleName, out assetName);
            if (!status)
            {
                Logger.LogError("No assetbundle at asset path :" + assetPath);
                return null;
            }
            var loader = AssetAsyncLoader.Get();
            prosessingAssetAsyncLoader.Add(loader);
            if (IsAssetLoaded(assetName))
            {
                Logger.LogError(">>>> IsAssetLoaded {0}", assetName);
                loader.Init(assetName, GetAssetCache(assetName));
                return loader;
            }

            var assetbundleLoader = LoadAssetBundleAsync(assetbundleName);
            loader.Init(assetName, assetbundleLoader);
            return loader;
        }
        public BaseAssetAsyncLoader LoadAssetAsync(string assetPath, System.Type assetType)
        {
#if UNITY_EDITOR
            if (AssetBundleConfig.IsEditorMode)
            {
                string             path   = string.Format("Assets/{0}/{1}", AssetBundleConfig.AssetsFolderName, assetPath);
                UnityEngine.Object target = AssetDatabase.LoadAssetAtPath(path, assetType);
                return(new EditorAssetAsyncLoader(target));
            }
#endif

            string assetbundleName = null;
            string assetName       = null;
            bool   status          = MapAssetPath(assetPath, out assetbundleName, out assetName);
            if (!status)
            {
                Logger.LogError("No assetbundle at asset path :" + assetPath);
                return(null);
            }

            var loader = AssetAsyncLoader.Get();
            prosessingAssetAsyncLoader.Add(loader);
            if (IsAssetLoaded(assetName))
            {
                loader.Init(assetName, GetAssetCache(assetName));
                return(loader);
            }
            else
            {
                var assetbundleLoader = LoadAssetBundleAsync(assetbundleName);
                loader.Init(assetName, assetbundleLoader);
                return(loader);
            }
        }
Example #3
0
        public static AssetAsyncLoader Get(bool isatlas, Type type)
        {
            AssetAsyncLoader loader = null;

            if (pool.Count > 0)
            {
                loader = pool.Dequeue();
            }
            else
            {
                loader = new AssetAsyncLoader(++sequence);
            }

            loader.isAtlas   = isatlas;
            loader.assetType = type;
            return(loader);
        }
Example #4
0
        public BaseAssetAsyncLoader LoadAssetAsync(string assetPath, System.Type assetType)
        {
#if UNITY_EDITOR
            if (AssetBundleConfig.IsEditorMode)
            {
                string path = AssetBundleUtility.PackagePathToAssetsPath(assetPath);
                KVDebugHelper.Instance.AddAssetInfo(assetPath, path);
                if (File.Exists(path))
                {
                    UnityEngine.Object target = AssetDatabase.LoadAssetAtPath(path, assetType);
                    return(new EditorAssetAsyncLoader(target));
                }
            }
#endif

            string assetbundleName = null;
            string assetName       = null;
            MapAssetPath(assetPath, out assetbundleName, out assetName);
            KVDebugHelper.Instance.AddAssetInfo(assetPath, assetbundleName);
            if (assetPath.IndexOf("spine") >= 0)
            {
                Debug.LogError($"不应该加载这个资源 assetPath:{assetPath}");
            }
            if (assetName == null)
            {
                Debug.LogError($"没有这个资源 assetPath:{assetPath}");
                return(null);
            }

            var loader = AssetAsyncLoader.Get();
            prosessingAssetAsyncLoader.Add(loader);
            if (IsAssetLoaded(assetName))
            {
                //Logger.LogError(">>>> IsAssetLoaded {0}", assetName);
                loader.Init(assetName, GetAssetCache(assetName));
                return(loader);
            }

            var assetbundleLoader = LoadAssetBundleAsync(assetbundleName, assetPath);
            loader.Init(assetName, assetbundleLoader);
            return(loader);
        }
Example #5
0
 public static void Recycle(AssetAsyncLoader creater)
 {
     pool.Enqueue(creater);
 }