Ejemplo n.º 1
0
 /// <summary>
 /// 添加加载完成回调
 /// </summary>
 /// <param name=""></param>
 protected void AddCallback(OnLoadResDone callback)
 {
     if (null != callback)
     {
         if (IsDone)
         {
             //如果加载已完成 则直接调用
             callback(IsSuccess, RetResult);
         }
         else
         {
             //添加调用列表中
             m_callbackList.Add(callback);
         }
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 工厂方法
        /// </summary>
        protected static T CreateNewLoader <T>(string path, OnLoadResDone callback, params object[] args) where T : ResLoader, new()
        {
            Dictionary <string, ResLoader> resLoaders = GetLoaderDictWithType(typeof(T));
            ResLoader loader = null;

            if (string.IsNullOrEmpty(path))
            {
                LoggerHelper.Error(string.Format("{0}: CreateNewLoader path is null", typeof(T)));
            }

            if (!resLoaders.TryGetValue(path, out loader))
            {
                //资源加载器不包含该资源
                loader           = new T();
                resLoaders[path] = loader;
                loader.Init(path, args);

                //此处编辑器可以生成对应的Loader GameObject
            }
            else
            {
                if (0 < loader.RefCount)
                {
                    LoggerHelper.Error(string.Format("loader.RefCount: {0}", loader.RefCount));
                    loader.RefCount = 0;
                    loader.IsDirty  = false;
                }
            }

            loader.RefCount++;

            if (m_recycleList.Contains(loader))
            {
                m_recycleList.Remove(loader);
            }

            loader.AddCallback(callback);

            return(loader as T);
        }