Пример #1
0
        /// <summary>
        /// Dispose
        /// </summary>
        public void Dispose(Action _complete = null)
        {
            if (null != routine)
            {
                StopInstatiate();
            }

            // 分帧卸载
            FramingFacade.Instance.FramingExecuteByTimeArgs(allCacheStaticGameObjects, 1f /**1s内要卸载完成*/, (i, _args) => { Object.Destroy(_args); }, () =>
            {
                serializedInfoConfig = null;
                CleraCache();
                sourceDatasDict.Clear();
                ResourcesMgrFacade.Instance.ReleaseSceneItems(sceneName);

                if (null != sceneRootNode)
                {
                    sceneRootNode.Dispose();
                    sceneRootNode = null;
                }

                if (null != _complete)
                {
                    _complete();
                }
            });

            // 不用等待释放结束,开始决定释放的时候,就不能再接收品质切换消息
            AppEvent.RemoveEvent(HKCommonDefine.EVENT_PERFORMANCE_SWITH); // 移除消息监听
        }
Пример #2
0
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="_sceneName"></param>
        /// <param name="_serializedInfo"></param>
        public SceneStaticItemLoader(string _sceneName, SceneSerializedInfo _serializedInfo)
        {
            sceneName            = _sceneName;
            serializedInfoConfig = _serializedInfo;
            devicePerformance    = (HKCommonDefine.DevicePerformance)ConfigSystemFacade.Instance.Get(HKCommonDefine.KEY_PERFORMANCE_LEVEL, (int)HKCommonDefine.DevicePerformance.MIDDLE);
#if UNITY_EDITOR
            // editor下默认最高品质
            devicePerformance = HKCommonDefine.DevicePerformance.HIGHT;
#endif


            // 创建父节点
            sceneRootNode = new SceneRootNode(_sceneName);

            // 切换质量设置
            AppEvent.OnEvent(HKCommonDefine.EVENT_PERFORMANCE_SWITH, EventPerformanceSwith);
        }
Пример #3
0
        /// <summary>
        /// 通过名字加载一个场景静态物体配置
        /// </summary>
        private void LoadSceneStaticConfig(string _sceneName, Action <SceneSerializedInfo> _serializedInfoCallback)
        {
            if (true == string.IsNullOrEmpty(_sceneName))
            {
                return;
            }

            if (true == serializedInfosDict.ContainsKey(_sceneName))
            {
                if (null != _serializedInfoCallback)
                {
                    _serializedInfoCallback(serializedInfosDict[_sceneName]);
                    return;
                }
            }

            var configName = string.Format("{0}_Serialized", _sceneName);


            ResourcesMgrFacade.Instance.LoadAssetAsync(configName, _cfgResponse =>
            {
                if (null == _cfgResponse)
                {
                    this.Error("无法加载场景静态物品配置文件 = " + configName);
                    return;
                }

                if (null != _cfgResponse.Data)
                {
                    SceneSerializedInfo serializedInfo = (SceneSerializedInfo)_cfgResponse.Data;
                    if (null != _serializedInfoCallback)
                    {
                        if (false == serializedInfosDict.ContainsKey(_sceneName))
                        {
                            serializedInfosDict.Add(_sceneName, serializedInfo);
                        }

                        _serializedInfoCallback(serializedInfo);
                    }
                }
                else
                {
                    this.Error("配置文件加载失败 = " + _sceneName);
                }
            });
        }