/// <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); // 移除消息监听 }
/// <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); }
/// <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); } }); }