Example #1
0
        /// <summary>
        /// 把每一帧加载到的资源保存到资源列表中
        /// 进入此方法的都是同名资源,不同名的资源请求要等到下一帧处理
        /// </summary>
        /// <param name="resInfo">资源包</param>
        /// <param name="loaded">已经加载完成的loader</param>
        /// <param name="loadingList"></param>
        private void ProcessLoaded(AssetLoader loaded)
        {
            Asset t_asset = m_dictResource[loaded.SrcPath];

            if (t_asset.OriginalObj == null)
            {
                t_asset.OriginalObj = loaded.OraginalObj;
            }

            LoaderInfo t_loaderInfo = loaded.Shift();

            ResCallBackReady(loaded.SrcPath, loaded.SrcName, loaded.OraginalObj, loaded.IsInstanate, t_loaderInfo.completeCallback, t_loaderInfo.customData);

            if (loaded.Count == 0)
            {
                m_dictLoader.Remove(loaded.SrcPath);
                PoolTo(loaded);
            }

            //非引用计数类型如果不缓存,则直接销毁
            if (t_asset.CanRelease)
            {
                t_asset.Release(true);
                m_dictResource.Remove(loaded.SrcPath);
            }
        }
Example #2
0
        /// <summary>
        /// 从前边冒出
        /// </summary>
        /// <returns></returns>
        public LoaderInfo Shift()
        {
            LoaderInfo t_loaderInfo = m_loaderInfoList[0];

            m_loaderInfoList.RemoveAt(0);
            m_loaderInfoDic.Remove(t_loaderInfo.scriptObj);
            return(t_loaderInfo);
        }
Example #3
0
        /// <summary>
        /// 创建加载信息
        /// </summary>
        /// <param name="scriptObj">请求的脚本</param>
        /// <param name="srcPath">资源路径</param>
        /// <param name="srcName">资源名</param>
        /// <param name="type">ResourceType</param>
        /// <param name="isInstance">是否实例化</param>
        /// <param name="isCache">是否缓存资源,可实例化的资源在引用计数为0时也不销毁,不可实例化资源跟引用计数无关</param>
        /// <param name="progress">进度回调</param>
        /// <param name="complete">结束回调</param>
        /// <param name="args">自定义参数</param>
        public static LoaderInfo CreateLoaderInfo(System.Object scriptObj, LoadingProgressCallback progress, LoadCompleteCallback complete, params string[] args)
        {
            LoaderInfo t_loaderInfo = new LoaderInfo();

            t_loaderInfo.scriptObj        = scriptObj;
            t_loaderInfo.progressCallback = progress;
            t_loaderInfo.completeCallback = complete;
            t_loaderInfo.customData       = args;

            return(t_loaderInfo);
        }
Example #4
0
        /// <summary>
        /// 加入任务
        /// </summary>
        /// <param name="loader"></param>
        public void Add(LoaderInfo loaderInfo)
        {
            if (m_loaderInfoDic == null)
            {
                m_loaderInfoDic = new Dictionary <System.Object, LoaderInfo>();
            }

            if (m_loaderInfoList == null)
            {
                m_loaderInfoList = new List <LoaderInfo>();
            }

            m_loaderInfoDic.Add(loaderInfo.scriptObj, loaderInfo);
            m_loaderInfoList.Add(loaderInfo);
        }