/// <summary> /// 加载窗口到内存 /// </summary> /// <param name="_winCfgs">窗口配置</param> /// <param name="_isInstance">是否实例化窗口</param> /// <param name="_callback">回调</param> /// <param name="_parameters">参数组</param> void OnLoadWindowInMemory(XLS_Config_Table_UIWindowSetting[] _winCfgs, bool _isInstance, UIWindowSettingEventHandler _callback, params object[] _parameters) { Dictionary <int, IAssetBundleOutput> outputMaping = new Dictionary <int, IAssetBundleOutput>(); foreach (XLS_Config_Table_UIWindowSetting cfg in _winCfgs) { StrayFogGamePools.assetBundleManager.LoadAssetInMemory(cfg.fileId, cfg.folderId, (output) => { bool isInstance = (bool)output.input.extraParameter[0]; XLS_Config_Table_UIWindowSetting winCfg = (XLS_Config_Table_UIWindowSetting)output.input.extraParameter[1]; Dictionary <int, IAssetBundleOutput> winMemory = (Dictionary <int, IAssetBundleOutput>)output.input.extraParameter[2]; XLS_Config_Table_UIWindowSetting[] cfgs = (XLS_Config_Table_UIWindowSetting[])output.input.extraParameter[3]; #region 添加内存映射 if (!winMemory.ContainsKey(winCfg.id)) { winMemory.Add(winCfg.id, output); } else { winMemory[winCfg.id] = output; } #endregion bool isAllLoad = true; #region 是否所有配置窗口已加载到内存 if (cfgs != null && cfgs.Length > 0) { foreach (XLS_Config_Table_UIWindowSetting c in cfgs) { isAllLoad &= winMemory.ContainsKey(c.id); } } #endregion if (isAllLoad) { #region 内存加载完成回调 if (isInstance) { UIWindowSettingEventHandler callback = (UIWindowSettingEventHandler)output.input.extraParameter[4]; object[] extralParameter = (object[])output.input.extraParameter[5]; callback(cfgs, winMemory, extralParameter); } else { UIWindowSettingEventHandler callback = (UIWindowSettingEventHandler)output.input.extraParameter[4]; object[] extralParameter = (object[])output.input.extraParameter[5]; callback(cfgs, extralParameter); } #endregion } }, _isInstance, cfg, outputMaping, _winCfgs, _callback, _parameters); } }
/// <summary> /// 预加载窗口 /// </summary> /// <param name="_windowId">窗口Id</param> /// <param name="_onCallback">回调</param> /// <param name="_parameters">参数组</param> public void PreloadWindow(int _windowId, UIWindowSettingEventHandler _onCallback, params object[] _parameters) { PreloadWindow(new int[1] { _windowId }, _onCallback, _parameters); }
/// <summary> /// 预加载窗口 /// </summary> /// <param name="_windowIds">窗口Id组</param> /// <param name="_onCallback">回调</param> /// <param name="_parameters">参数组</param> public void PreloadWindow(int[] _windowIds, UIWindowSettingEventHandler _onCallback, params object[] _parameters) { OnLoadWindowInMemory(OnGetWindowSetting(_windowIds), false, _onCallback, _parameters); }
/// <summary> /// 预加载窗口 /// </summary> /// <param name="_folderIds">文件夹id组</param> /// <param name="_fileIds">文件id组</param> /// <param name="_onCallback">回调</param> /// <param name="_parameters">参数组</param> public void PreloadWindow(int[] _folderIds, int[] _fileIds, UIWindowSettingEventHandler _onCallback, params object[] _parameters) { PreloadWindow(OnGetWindowSetting(_folderIds, _fileIds), _onCallback, _parameters); }