예제 #1
0
        public AssetBundleResource GetAssetBundle(ref string strResourceName, LoadFinishDelegate callBack, object custumParam = null,
                                                  TaskPriority ePriority = TaskPriority.TaskPriority_Immediate, IResource.ResourceCacheLevel rcl = IResource.ResourceCacheLevel.ResourceCacheLevel_1)
        {
            ResourceManagerImpl mgr = GetMgr(IResource.EResourceType.EResourceType_AssetBundle);

            return((AssetBundleResource)mgr.GetResource(IResource.EResourceType.EResourceType_AssetBundle, ref strResourceName, callBack, custumParam, rcl, ePriority));
        }
예제 #2
0
        public TextureResource GetTexture(ref string strResourceName, LoadFinishDelegate callBack, object custumParam = null,
                                          TaskPriority ePriority = TaskPriority.TaskPriority_Normal, IResource.ResourceCacheLevel rcl = IResource.ResourceCacheLevel.ResourceCacheLevel_1)
        {
            ResourceManagerImpl mgr = GetMgr(IResource.EResourceType.EResourceType_Texture);

            return((TextureResource)mgr.GetResource(IResource.EResourceType.EResourceType_Texture, ref strResourceName, callBack, custumParam, rcl, ePriority));
        }
예제 #3
0
        // 资源释放
        virtual public void Destroy()
        {
            if (m_objRes != null)
            {
                GameObject.DestroyImmediate(m_objRes, true);
                m_objRes = null;
                Utility.Log.Trace("Destroy {0}", m_strResName);
            }

            loadFinishCallBack = null; // 清空回调聊表
        }
예제 #4
0
        /// <summary>
        /// 资源加载完毕
        /// </summary>
        virtual public void OnFinish()
        {
            if (loadFinishCallBack != null)
            {
                Delegate[] delegates = loadFinishCallBack.GetInvocationList();
                if (delegates == null)
                {
                    return;
                }
                for (int i = 0; i < delegates.Length; i++)
                {
                    LoadFinishDelegate dele = (LoadFinishDelegate)delegates[i];
                    // Profiler.BeginSample(dele.Method.DeclaringType.FullName + "->" + dele.Method.Name);
                    dele.Invoke(this, m_strResName, customParams[i]);
                    //Profiler.EndSample();
                }

                loadFinishCallBack = null;
                customParams.Clear();
            }
        }
예제 #5
0
        //////////////////////////////////////////////////////////////////////////
        /// 方法
        /// <summary>
        /// 加载资源
        /// </summary>
        /// <param name="eType">资源类型</param>
        /// <param name="strResourceName">资源名称</param>
        /// <param name="callBack">加载完成回调</param>
        /// <param name="custemParam">自定义参数</param>
        /// <param name="rcl">资源缓存等级</param>
        /// <returns></returns>
        public IResource GetResource(IResource.EResourceType eType, ref string strResourceName, LoadFinishDelegate callBack, object custumParam = null,
                                     IResource.ResourceCacheLevel rcl = IResource.ResourceCacheLevel.ResourceCacheLevel_NULL, TaskPriority ePriority = TaskPriority.TaskPriority_Normal)
        {
            if (strResourceName == null)
            {
                return(null);
            }
            strResourceName = strResourceName.ToLower();
            IResource res = null;

            if (!m_mapResource.TryGetValue(strResourceName, out res))
            {
                if (m_mapIdleResource.TryGetValue(strResourceName, out res))
                {
                    m_mapResource.Add(strResourceName, res);
                    m_mapIdleResource.Remove(strResourceName);
                }
            }

            if (res != null)
            {
                res.AddRef();

                // 缓存等级修正
                if (rcl > res.m_eResourceCacheLevel)
                {
                    res.m_eResourceCacheLevel = rcl;
                }

                if (res.m_eState == IResource.EResourceState.EResourceState_Complete)
                {
                    res.loadFinishCallBack += callBack;
                    res.customParams.Add(custumParam);

                    if (ePriority == TaskPriority.TaskPriority_Immediate)
                    {
                        res.OnFinish();
                    }
                    else
                    {
                        m_lstCompleteResource.Add(res);
                    }
                }
                else
                {
                    res.loadFinishCallBack += callBack;
                    res.customParams.Add(custumParam);
                }
            }
            else
            {
                /// 根据资源后缀名称判定资源类型
                res = ResourceManager.Instance().CreateResource(eType, this, ePriority);
                m_mapResource[strResourceName] = res;
                res.m_strResName          = strResourceName;
                res.m_strResFileName      = strResourceName;
                res.m_eState              = IResource.EResourceState.EResourceState_Loading;
                res.m_objRes              = null;
                res.m_eResourceCacheLevel = rcl;
                res.loadFinishCallBack   += callBack;
                res.customParams.Add(custumParam);

                // 投递资源加载
                res.LoadRes();
            }

            return(res);
        }