Beispiel #1
0
    public static CAudioLoader Load(string url, System.Action <bool, AudioClip> callback = null)
    {
        CLoaderDelgate newCallback = null;

        if (callback != null)
        {
            newCallback = (isOk, obj) => callback(isOk, obj as AudioClip);
        }
        return(AutoNew <CAudioLoader>(url, newCallback));
    }
Beispiel #2
0
    public static CSpriteLoader Load(string path, CSpriteLoaderDelegate callback = null)
    {
        CLoaderDelgate newCallback = null;

        if (callback != null)
        {
            newCallback = (isOk, obj) => callback(isOk, obj as Sprite);
        }
        return(AutoNew <CSpriteLoader>(path, newCallback));
    }
    public static CAssetFileLoader Load(string path, CAssetFileBridgeDelegate assetFileLoadedCallback = null)
    {
        CLoaderDelgate realcallback = null;

        if (assetFileLoadedCallback != null)
        {
            realcallback = (isOk, obj) => assetFileLoadedCallback(isOk, obj as UnityEngine.Object);
        }

        return(AutoNew <CAssetFileLoader>(path, realcallback));
    }
Beispiel #4
0
        public static KFontLoader Load(string path, Action <bool, Font> callback = null)
        {
            CLoaderDelgate realcallback = null;

            if (callback != null)
            {
                realcallback = (isOk, obj) => callback(isOk, obj as Font);
            }

            return(AutoNew <KFontLoader>(path, realcallback));
        }
Beispiel #5
0
    public static CStaticAssetLoader Load(string url, CAssetFileLoader.CAssetFileBridgeDelegate callback = null)
    {
        CLoaderDelgate newCallback = null;

        if (callback != null)
        {
            newCallback = (isOk, obj) => callback(isOk, obj as UnityEngine.Object);
        }

        return(AutoNew <CStaticAssetLoader>(url, newCallback));
    }
Beispiel #6
0
    public static KStaticAssetLoader Load(string url, KAssetFileLoader.CAssetFileBridgeDelegate callback = null, KAssetBundleLoaderMode loaderMode = KAssetBundleLoaderMode.Default)
    {
        CLoaderDelgate newCallback = null;

        if (callback != null)
        {
            newCallback = (isOk, obj) => callback(isOk, obj as UnityEngine.Object);
        }

        return(AutoNew <KStaticAssetLoader>(url, newCallback, false, loaderMode));
    }
Beispiel #7
0
    public static KAssetFileLoader Load(string path, CAssetFileBridgeDelegate assetFileLoadedCallback = null, KAssetBundleLoaderMode loaderMode = KAssetBundleLoaderMode.Default)
    {
        CLoaderDelgate realcallback = null;

        if (assetFileLoadedCallback != null)
        {
            realcallback = (isOk, obj) => assetFileLoadedCallback(isOk, obj as UnityEngine.Object);
        }

        return(AutoNew <KAssetFileLoader>(path, realcallback, false, loaderMode));
    }
Beispiel #8
0
    public static CAssetBundleLoader Load(string url, CAssetBundleLoaderDelegate callback = null)
    {
        CLoaderDelgate newCallback = null;

        if (callback != null)
        {
            newCallback = (isOk, obj) => callback(isOk, obj as AssetBundle);
        }
        var newLoader = AutoNew <CAssetBundleLoader>(url, newCallback);


        return(newLoader);
    }
Beispiel #9
0
    public static KAssetBundleLoader Load(string url, CAssetBundleLoaderDelegate callback = null,
                                          KAssetBundleLoaderMode loaderMode = KAssetBundleLoaderMode.Default)
    {
        CLoaderDelgate newCallback = null;

        if (callback != null)
        {
            newCallback = (isOk, obj) => callback(isOk, obj as AssetBundle);
        }
        var newLoader = AutoNew <KAssetBundleLoader>(url, newCallback, false, loaderMode);


        return(newLoader);
    }
Beispiel #10
0
        /// <summary>
        /// 统一的对象工厂
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="url"></param>
        /// <param name="callback"></param>
        /// <param name="forceCreateNew"></param>
        /// <returns></returns>
        protected static T AutoNew <T>(string url, CLoaderDelgate callback = null, bool forceCreateNew = false,
                                       params object[] initArgs) where T : KAbstractResourceLoader, new()
        {
            Dictionary <string, KAbstractResourceLoader> typesDict = GetTypeDict(typeof(T));
            KAbstractResourceLoader loader;

            if (string.IsNullOrEmpty(url))
            {
                Logger.LogError("[{0}:AutoNew]url为空", typeof(T));
            }

            if (forceCreateNew || !typesDict.TryGetValue(url, out loader))
            {
                loader = new T();
                if (!forceCreateNew)
                {
                    typesDict[url] = loader;
                }

                loader.IsForceNew = forceCreateNew;
                loader.Init(url, initArgs);

                if (Application.isEditor)
                {
                    KResourceLoaderDebugger.Create(typeof(T).Name, url, loader);
                }
            }
            else
            {
                if (loader.RefCount < 0)
                {
                    //loader.IsDisposed = false;  // 转死回生的可能
                    Logger.LogError("Error RefCount!");
                }
            }

            loader.RefCount++;

            // RefCount++了,重新激活,在队列中准备清理的Loader
            if (UnUsesLoaders.ContainsKey(loader))
            {
                UnUsesLoaders.Remove(loader);
                loader.Revive();
            }

            loader.AddCallback(callback);

            return(loader as T);
        }
Beispiel #11
0
 /// <summary>
 /// 在IsFinisehd后悔执行的回调
 /// </summary>
 /// <param name="callback"></param>
 protected void AddCallback(CLoaderDelgate callback)
 {
     if (callback != null)
     {
         if (IsCompleted)
         {
             if (ResultObject == null)
             {
                 Logger.LogWarning("Null ResultAsset {0}", Url);
             }
             callback(ResultObject != null, ResultObject);
         }
         else
         {
             _afterFinishedCallbacks.Add(callback);
         }
     }
 }
    protected static T AutoNew <T>(string url, CLoaderDelgate callback = null) where T : CBaseResourceLoader, new()
    {
        //CheckGcCollect();

        Dictionary <string, CBaseResourceLoader> typesDict = GetTypeDict(typeof(T));
        CBaseResourceLoader loader;

        if (string.IsNullOrEmpty(url))
        {
            CDebug.LogError("[{0}:AutoNew]url为空", typeof(T));
        }

        if (!typesDict.TryGetValue(url, out loader))
        {
            loader = typesDict[url] = new T();
            loader.Init(url);

            if (Application.isEditor)
            {
                CResourceLoaderDebugger.Create(typeof(T).Name, url, loader);
            }
        }
        else
        {
            if (loader.RefCount < 0)
            {
                //loader.IsDisposed = false;  // 转死回生的可能
                CDebug.LogError("Error RefCount!");
            }
        }

        loader.RefCount++;

        loader.AddCallback(callback);

        // RefCount++了,重新激活,在队列中准备清理的Loader
        if (UnUsesLoaders.ContainsKey(loader))
        {
            UnUsesLoaders.Remove(loader);
            loader.IsReadyDisposed = false;
        }

        return(loader as T);
    }
Beispiel #13
0
 //public int DownloadedSize { get { return Www != null ? Www.bytesDownloaded : 0; } }
 /// <summary>
 /// Use this to directly load WWW by Callback or Coroutine, pass a full URL.
 /// A wrapper of Unity's WWW class.
 /// </summary>
 public static CWWWLoader Load(string url, CLoaderDelgate callback = null)
 {
     var wwwLoader = AutoNew<CWWWLoader>(url, callback);
     return wwwLoader;
 }
Beispiel #14
0
    /// <summary>
    /// Use this to directly load WWW by Callback or Coroutine, pass a full URL.
    /// A wrapper of Unity's WWW class.
    /// </summary>
    public static CWWWLoader Load(string url, CLoaderDelgate callback = null)
    {
        var wwwLoader = AutoNew <CWWWLoader>(url, callback);

        return(wwwLoader);
    }