Beispiel #1
0
 public void Reset()
 {
     OnObjFinish = null;
     OnFinish    = null;
     Params.Clear();
     ResObj = null;
 }
Beispiel #2
0
 /// <summary>
 /// 异步获得对象
 /// </summary>
 /// <param name="path">对象路径</param>
 /// <param name="onFinish">获得回调</param>
 /// <param name="priority">加载优先级</param>
 /// <param name="setCreateNode">设置创建节点</param>
 /// <param name="paramValues">回调参数</param>
 public long SpawnAsync(string path, OnAsyncObjFinish onFinish,
                        LoadResPriority priority = LoadResPriority.Res_Middle,
                        bool setCreateNode       = false, params object[] paramValues)
 {
     return(ObjManager.Instance.InstantiateObjectAsyncAsset(path, GetHashCode(), onFinish, priority,
                                                            setCreateNode, paramValues));
 }
 public void Reset()
 {
     m_ObjDealFinish = null;
     m_ResObj        = null;
     m_ResDealFinish = null;
     m_Param1        = m_Param2 = m_Param3 = null;
 }
Beispiel #4
0
 public void Reset()
 {
     m_DealFinish = null;
     m_Param1     = null;
     m_Param2     = null;
     m_Param3     = null;
 }
Beispiel #5
0
        /// <summary>
        /// 异步加载
        /// </summary>
        /// <param name="path">路径</param>
        /// <param name="deaFinish">资源加载完成回调</param>
        /// <param name="priority">加载优先级</param>
        /// <param name="setSceneParent">是否设置Parent为SceneTrs</param>
        /// <param name="param1"></param>
        /// <param name="param2"></param>
        /// <param name="param3"></param>
        /// <param name="bClear">跳场景是否清除</param>
        public long InstantiateObjectAsync(string path, OnAsyncObjFinish deaFinish, LoadResPriority priority, bool setSceneParent = false,
                                           object param1 = null, object param2 = null, object param3 = null, bool bClear = true)
        {
            if (string.IsNullOrEmpty(path))
            {
                return(0);
            }
            uint        crc    = CRC32.GetCRC32(path);
            TResouceObj resObj = GetObjectFromPool(crc);

            if (resObj != null)
            {
                if (setSceneParent)
                {
                    resObj.CloneObj.transform.SetParent(SceneTrs, false);
                }
                deaFinish?.Invoke(path, resObj.CloneObj, param1, param2, param3);
                return(resObj.Guid);
            }
            long guid = ResourcesManager.Instance.CreatGuid();

            resObj                = mResouceObjPool.Allocate();
            resObj.Crc            = crc;
            resObj.SetSceneParent = setSceneParent;
            resObj.Clear          = bClear;
            resObj.DealFinish     = deaFinish;
            resObj.Param1         = param1;
            resObj.Param2         = param2;
            resObj.Param3         = param3;
            //调用ResouceManager的异步加载接口
            ResourcesManager.Instance.AsyncLoadResouce(path, resObj, OnLoadResouceObjFinish, priority);
            return(guid);
        }
Beispiel #6
0
 public void Reset()
 {
     dealFinish = null;
     param1     = null;
     param2     = null;
     param3     = null;
 }
Beispiel #7
0
 public void Reset()
 {
     m_DealObjFinish = null;
     m_Param1        = null;
     m_Param2        = null;
     m_Param3        = null;
     m_ResObj        = null;
 }
        public void Reset()
        {
            DealObjFinish = null;
            DealFinish    = null;

            Param1 = null;
            Param2 = null;
            Param3 = null;
        }
Beispiel #9
0
 public void Reset()
 {
     m_Crc            = 0;
     m_CloneObj       = null;
     m_bClear         = true;
     m_Guid           = 0;
     m_Already        = false;
     m_SetSceneParent = false;
     m_dealFinish     = null;
     m_OfflineData    = null;
 }
 public void Reset()
 {
     m_Crc            = 0;
     m_CloneObj       = null;
     m_bClear         = true;
     m_Guid           = 0;
     m_setSceneParent = false;
     m_DealFnish      = null;
     m_param1         = m_param2 = m_param3 = null;
     m_OfflineData    = null;
 }
Beispiel #11
0
        /// <summary>
        /// 异步加载资源 (仅仅是不需要实例化的资源)
        /// </summary>
        private void AsyncLoadResource <T>(string path, OnAsyncObjFinish onFinish, uint crc = 0, ResLoadMode mode = ResLoadMode.Null,
                                           LoadResPriority priority = LoadResPriority.Res_Slow, params object[] paramValues)
            where T : UnityEngine.Object
        {
            if (mode == ResLoadMode.Null)
            {
                mode = LoadMode(ref path);
            }
            if (crc == 0)
            {
                crc = Crc32.GetCrc32(path);
            }

            ResItem item = GetCacheResouceItem(crc);

            if (item != null)
            {
                if (onFinish != null)
                {
                    onFinish(path, item.Obj, paramValues);
                }

                return;
            }

            //判断是否在加载中
            AsyncLoadResParam param = null;

            if (!_LoadingAssetDic.TryGetValue(crc, out param) || param == null)
            {
                param          = _AsyncLoadResParamPool.Spawn(true);
                param.Crc      = crc;
                param.Path     = path;
                param.Priority = priority;
                param.ResType  = typeof(T);
                param.LoadMode = JudgeLoadMode(mode);
                _LoadingAssetDic.Add(crc, param);
                _LoadingAssetList[(int)priority].Add(param);
            }

            //回调列表里面加回调
            AsyncCallBack callBack = _AsyncCallBackPool.Spawn(true);

            callBack.OnObjFinish = onFinish;
            if (paramValues != null && paramValues.Length > 0)
            {
                foreach (object value in paramValues)
                {
                    callBack.Params.Add(value);
                }
            }

            param.CallBackList.Add(callBack);
        }
Beispiel #12
0
 public void Reset()
 {
     Crc                = 0;
     ResItem            = null;
     CloneObj           = null;
     ClearByChangeScene = true;
     Guid               = 0;
     AlreadyRelease     = false;
     SetParent          = false;
     OnFinish           = null;
     ParamList.Clear();
 }
 public void Reset()
 {
     m_Crc            = 0;
     m_CloneObj       = null;
     m_ClearScene     = true;
     m_Guid           = 0;
     m_ResItem        = null;
     m_Already        = false;
     m_SetSceneParent = false;
     m_DealFinish     = null;
     m_Param1         = m_Param2 = m_Param3 = null;
 }
Beispiel #14
0
        /// <summary>
        /// 异步对象加载
        /// </summary>
        /// <param UIName="path"></param>
        /// <param UIName="fealFinish"></param>
        /// <param UIName="priority"></param>
        /// <param UIName="setSceneObject"></param>
        /// <param UIName="param1"></param>
        /// <param UIName="param2"></param>
        /// <param UIName="param3"></param>
        /// <param UIName="clearChangeScene"></param>
        private long InstantiateObjectAsync(string path, OnAsyncObjFinish onFinish, LoadResPriority priority,
                                            bool setCreateNode = false, params object[] paramValues)
        {
            if (string.IsNullOrEmpty(path))
            {
                return(0);
            }
            ResLoadMode mode = ResManager.Instance.LoadMode(ref path);
            uint        crc  = Crc32.GetCrc32(path);

            return(InstantiateObjectAsync(path, crc, mode, onFinish, priority, setCreateNode, paramValues));
        }
Beispiel #15
0
    //离线数据
    //public OfflineData m_OfflineData = null;

    public void Reset()
    {
        crc            = 0;
        cloneObj       = null;
        clear          = true;
        guid           = 0;
        resItem        = null;
        already        = false;
        setSceneParent = false;
        dealFinish     = null;
        param1         = param2 = param3 = null;
        //m_OfflineData = null;
    }
 public void Reset()
 {
     Crc            = 0;
     CloneObj       = null;
     Clear          = true;
     Guid           = 0;
     ResItem        = null;
     Already        = false;
     SetSceneParent = false;
     DealFinish     = null;
     Param1         = null;
     Param2         = null;
     Param3         = null;
     OffData        = null;
 }
Beispiel #17
0
 /// <summary>
 /// 异步加载资源 (仅仅是不需要实例化的资源)
 /// </summary>
 internal void AsyncLoadResourceAsset <T>(string path, OnAsyncObjFinish onFinish, int assetHelperHash,
                                          LoadResPriority priority = LoadResPriority.Res_Slow, params object[] paramValues)
     where T : UnityEngine.Object
 {
     if (!string.IsNullOrEmpty(path))
     {
         ResLoadMode mode = LoadMode(ref path);
         uint        crc  = Crc32.GetCrc32(path);
         AddResAsset(crc, assetHelperHash);
         AsyncLoadResource <T>(path, onFinish, crc, mode, priority, paramValues);
     }
     else
     {
         Debug.LogError("路径为null");
     }
 }
        /// <summary>
        /// 异步对象加载
        /// </summary>
        public long InstantiateObjectAsync(string path, OnAsyncObjFinish dealFinish, LoadResPriority priority,
                                           bool setSceneObject = false, object param1 = null, object param2 = null, object param3 = null,
                                           bool bClear         = true)
        {
            if (string.IsNullOrEmpty(path))
            {
                return(0);
            }

            uint        crc    = CRC32.GetCRC32(path);
            ResourceObj resObj = GetObjectFromPool(crc);

            if (resObj != null)
            {
                if (setSceneObject)
                {
                    resObj.m_CloneObj.transform.SetParent(SceneTrs, false);
                }

                if (dealFinish != null)
                {
                    dealFinish(path, resObj.m_CloneObj, param1, param2, param3);
                }
                return(resObj.m_Guid);
            }

            long guid = ResourceManager.Instance.CreateGUID();

            resObj                  = m_ResourceObjClassPool.Spawn(true);
            resObj.m_Crc            = crc;
            resObj.m_setSceneParent = setSceneObject;
            resObj.m_bClear         = bClear;
            resObj.m_DealFnish      = dealFinish;

            resObj.m_param1 = param1;
            resObj.m_param2 = param2;
            resObj.m_param3 = param3;

            //调用ResourceManager异步加载接口
            ResourceManager.Instance.AsyncLoadResource(path, resObj, OnLoadResourceObjFinish, priority);

            return(guid);
        }
        /// <summary>
        /// 异步加载资源(仅仅是不需要实例化的资源,例如texture,音频等等)
        /// </summary>
        public void AsyncLoadResource(string path, OnAsyncObjFinish dealFinish, LoadResPriority priority, bool isSprite = false, object param1 = null,
                                      object param2 = null, object param3 = null, uint crc = 0)
        {
            if (crc == 0)
            {
                crc = CRC32.GetCRC32(path);
            }

            ResourceItem item = GetCacheResourceItem(crc);

            if (item != null)
            {
                if (dealFinish != null)
                {
                    dealFinish(path, item.m_Obj, param1, param2, param3);
                }
                return;
            }

            //判断是否在加载中
            AsynvLoadResParam para = null;

            if (!m_LodingAssetDic.TryGetValue(crc, out para) || para == null)
            {
                para             = m_AsyncLoadResParamPool.Spawn(true);
                para.m_Crc       = crc;
                para.m_Path      = path;
                para.m_SpriteBoo = isSprite;
                para.m_Priority  = priority;
                m_LodingAssetDic.Add(crc, para);
                m_LoadingAssetList[(int)priority].Add(para);
            }

            //往回调列表里加回调
            //这里加的是不针对的回调
            ResMgrAsyncCallBack callBack = m_AsyncCallBackPool.Spawn(true);

            callBack.m_ResDealFinish = dealFinish;
            callBack.m_Param1        = param1;
            callBack.m_Param2        = param2;
            callBack.m_Param3        = param3;
            para.m_CallBackList.Add(callBack);
        }
Beispiel #20
0
        /// <summary>
        /// 异步加载资源(仅仅是不需要实例化的资源,如音频,图片等等)
        /// </summary>
        public void AsynLoadResource(string path, OnAsyncObjFinish dealFinish, LoadResPriority priority, object p1 = null, object p2 = null, object p3 = null, uint crc = 0)
        {
            if (crc == 0)
            {
                crc = CRC32.GetCRC32(path);
            }

            ResourceItem item = GetCacheResourrceItem(crc);


            if (item != null)
            {
                if (dealFinish != null)
                {
                    dealFinish(path, item.m_Obj, p1, p2, p3);
                }
                return;
            }

            //判断是否在加载中
            AsyncLoadResParam para = null;

            if (!m_LoadingAssetDic.TryGetValue(crc, out para) || para == null)
            {
                para            = m_AsyncLoadResParamPool.Spawn(true);
                para.m_Crc      = crc;
                para.m_Path     = path;
                para.m_Priority = priority;

                m_LoadingAssetDic.Add(crc, para);
                m_LoadingAssetList[(int)priority].Add(para);
            }

            //往回调列表里面添加回调
            AsyncCallBack callBack = m_AsyncCallBackPool.Spawn(true);

            callBack.m_DealFinish = dealFinish;
            callBack.m_Param1     = p1;
            callBack.m_Param2     = p2;
            callBack.m_Param3     = p3;
            para.m_CallBackList.Add(callBack);
        }
        /// <summary>
        /// 异步加载资源(仅仅是不需要实例化的资源,例如音频,图片等)
        /// </summary>
        /// <param name="path"></param>
        /// <param name="dealFinish"></param>
        /// <param name="priority"></param>
        /// <param name="param1"></param>
        /// <param name="param2"></param>
        /// <param name="param3"></param>
        /// <param name="crc"></param>
        public void AsyncLoadResouce(string path, OnAsyncObjFinish dealFinish, LoadResPriority priority, bool isSprite = false, object param1 = null, object param2 = null, object param3 = null, uint crc = 0)
        {
            if (crc == 0)
            {
                crc = CRC32.GetCRC32(path);
            }
            TResouceItem item = GetCacheResouceItem(crc);

            if (item != null)
            {
                if (dealFinish != null)
                {
                    dealFinish(path, item.Obj, param1, param2, param3);
                }
                return;
            }
            //判断是否在加载中
            TAsyncLoadResParam para = null;

            if (!mLoadingAssetDic.TryGetValue(crc, out para) || para == null)
            {
                para          = mAsyncLoadResParamPool.Allocate();
                para.Crc      = crc;
                para.Path     = path;
                para.IsSprite = isSprite;
                para.Priority = priority;
                mLoadingAssetDic.Add(crc, para);
                mLoadingAssetList[(int)priority].Add(para);
            }
            //往回调列表里面加回调
            TAsyncCallBack callBack = mAsyncCallBackPool.Allocate();

            callBack.DealObjFinish = dealFinish;

            callBack.Param1 = param1;
            callBack.Param2 = param2;
            callBack.Param3 = param3;
            para.CallbackList.Add(callBack);
        }
Beispiel #22
0
    /// <summary>
    /// 异步加载资源,仅仅是不需要实例化的资源,例如音频,图片等等
    /// </summary>
    public void AsyncLoadResource(string path, OnAsyncObjFinish dealFinish, LoadResPriority priority, uint crc = 0, object param1 = null, object param2 = null, object param3 = null)
    {
        if (crc == 0)
        {
            crc = CRC32.GetCRC32(path);
        }
        ResourceItem item = GetCancheResourceItem(crc);

        if (item != null)
        {
            if (dealFinish != null)
            {
                dealFinish(path, item._obj, param1, param2, param3);
            }
            return;
        }
        //判断是否在加载中
        AsyncLoadResParam param = null;

        if (!_loadingAssetDic.TryGetValue(crc, out param) || param == null)
        {
            param          = _asyncLoadResParamPool.Spawn(true);
            param.crc      = crc;
            param.path     = path;
            param.priority = priority;
            _loadingAssetDic.Add(crc, param);
            _loadingAssetList[(int)priority].Add(param);
        }

        //往回调列表里面加回调
        AsyncCallBack callBack = _asyncCallBackPool.Spawn(true);

        callBack.dealFinish = dealFinish;
        callBack.param1     = param1;
        callBack.param2     = param2;
        callBack.param3     = param3;
        param.callBackList.Add(callBack);
    }
Beispiel #23
0
        /// <summary>
        /// 异步对象加载
        /// </summary>
        /// <param UIName="path"></param>
        /// <param UIName="fealFinish"></param>
        /// <param UIName="priority"></param>
        /// <param UIName="setSceneObject"></param>
        /// <param UIName="param1"></param>
        /// <param UIName="param2"></param>
        /// <param UIName="param3"></param>
        /// <param UIName="clearChangeScene"></param>
        private long InstantiateObjectAsync(string path, uint crc, ResLoadMode mode, OnAsyncObjFinish onFinish, LoadResPriority priority,
                                            bool setCreateNode = false, params object[] paramValues)
        {
            ResouceObj resObj = GetObjectFromPool(crc);

            if (resObj != null)
            {
                if (setCreateNode)
                {
                    resObj.CloneObj.transform.SetParent(_CreateNode, false);
                }

                if (onFinish != null)
                {
                    resObj.ResItem.RefCount.Increase();
                    onFinish(path, resObj.CloneObj, paramValues);
                }

                return(resObj.Guid);
            }

            long guid = ResManager.CreateGuid();

            resObj           = new ResouceObj();// _ResourceObjClassPool.Spawn(true);
            resObj.Crc       = crc;
            resObj.SetParent = setCreateNode;
            resObj.OnFinish  = onFinish;
            if (paramValues != null && paramValues.Length > 0)
            {
                foreach (object value in paramValues)
                {
                    resObj.ParamList.Add(value);
                }
            }
            //调用ResourceManagerd的异步加载接口
            ResManager.Instance.AsyncLoadResource(path, mode, resObj, OnLoadResourceObjFinish, priority);
            return(guid);
        }
Beispiel #24
0
 /// <summary>
 /// 异步获得对象
 /// </summary>
 /// <param name="path">对象路径</param>
 /// <param name="onFinish">获得回调</param>
 /// <param name="priority">加载优先级</param>
 /// <param name="setCreateNode">设置创建节点</param>
 /// <param name="paramValues">回调参数</param>
 internal static long SpawnAsync(string path, OnAsyncObjFinish onFinish, LoadResPriority priority = LoadResPriority.Res_Middle,
                                 bool setCreateNode = false, params object[] paramValues)
 {
     return(Instance.InstantiateObjectAsync(path, onFinish, priority, setCreateNode, paramValues));
 }
Beispiel #25
0
 public static void SpawnAsync(string path, OnAsyncObjFinish onFinish, LoadResPriority priority,
                               bool setCreateNode = false, params object[] paramValues)
 {
     ObjManager.SpawnAsync(path, onFinish, priority, setCreateNode, paramValues);
 }
Beispiel #26
0
 /// <summary>
 /// 异步加载资源
 /// </summary>
 /// <typeparam name="T">资源类型</typeparam>
 /// <param name="path">资源路径</param>
 /// <param name="onFinish">完成回调</param>
 /// <param name="priority">资源加载优先级</param>
 /// <param name="paramValues">参数列表</param>
 public static void AsyncLoadRes <T>(string path, OnAsyncObjFinish onFinish,
                                     LoadResPriority priority = LoadResPriority.Res_Slow, params object[] paramValues)
     where T : UnityEngine.Object
 {
     ResManager.AsyncLoadRes <T>(path, onFinish, priority, paramValues);
 }
Beispiel #27
0
 /// <summary>
 /// 异步加载资源
 /// </summary>
 /// <typeparam name="T">资源类型</typeparam>
 /// <param name="path">资源路径</param>
 /// <param name="onFinish">完成回调</param>
 /// <param name="priority">资源加载优先级</param>
 /// <param name="paramValues">参数列表</param>
 internal static void AsyncLoadRes <T>(string path, OnAsyncObjFinish onFinish,
                                       LoadResPriority priority = LoadResPriority.Res_Slow, params object[] paramValues)
     where T : UnityEngine.Object
 {
     Instance.AsyncLoadResource <T>(path, onFinish, 0, ResLoadMode.Null, priority, paramValues);
 }
Beispiel #28
0
 /// <summary>
 /// 异步加载资源
 /// </summary>
 /// <typeparam name="T">资源类型</typeparam>
 /// <param name="path">资源路径</param>
 /// <param name="onFinish">完成回调</param>
 /// <param name="priority">资源加载优先级</param>
 /// <param name="paramValues">参数列表</param>
 public void AsyncLoadRes <T>(string path, OnAsyncObjFinish onFinish,
                              LoadResPriority priority = LoadResPriority.Res_Slow, params object[] paramValues)
     where T : UnityEngine.Object
 {
     ResManager.Instance.AsyncLoadResourceAsset <T>(path, onFinish, GetHashCode(), priority, paramValues);
 }