| System/WindowBase/Window.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| UI/Common/WindowConfig.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
System/WindowBase/Window.cs
@@ -38,6 +38,7 @@ } public bool playAnimation { get; set; } public bool executedActiveWindow { get; set; } internal Window Open() { @@ -65,6 +66,7 @@ Debug.Log(ex.StackTrace); } executedActiveWindow = false; RectTransform parent = null; try { @@ -151,6 +153,7 @@ windowState = WindowState.Closing; } executedActiveWindow = false; return this; } @@ -207,6 +210,7 @@ try { OnAfterClose(); executedActiveWindow = false; } catch (System.Exception ex) { @@ -237,6 +241,11 @@ public virtual void CloseClick() { CloseImmediately(); } public void ChildActive() { OnActived(); } protected virtual void LateUpdate() @@ -350,6 +359,7 @@ try { OnAfterClose(); executedActiveWindow = false; } catch (System.Exception ex) { @@ -400,6 +410,7 @@ try { OnAfterClose(); executedActiveWindow = false; } catch (System.Exception ex) { @@ -439,7 +450,37 @@ try { var isChildWindow = WindowConfig.Get().IsChildWindow(this.gameObject.name); if (isChildWindow) { var parentName = string.Empty; WindowConfig.Get().FindParentWindow(this.gameObject.name, out parentName); var parentWindow = WindowCenter.Instance.Get(parentName); if (parentWindow != null && parentWindow.executedActiveWindow) { OnActived(); executedActiveWindow = true; } } else { OnActived(); executedActiveWindow = true; var childWindows = WindowConfig.Get().FindChildWindows(this.gameObject.name); var isParentWindow = childWindows != null; if (isParentWindow) { foreach (var child in childWindows) { var window = WindowCenter.Instance.Get(child); if (window != null && !window.executedActiveWindow) { window.ChildActive(); } } } } } catch (Exception ex) { UI/Common/WindowConfig.cs
@@ -8,6 +8,8 @@ { public WindowTable[] windows; public Dictionary<string, List<string>> parentChildrenTable = new Dictionary<string, List<string>>(); public List<string> childWindows = new List<string>(); static WindowConfig config; public static WindowConfig Get() @@ -15,11 +17,21 @@ if (config == null) { config = Resources.Load<WindowConfig>("ScriptableObject/Config/WindowConfig"); for (int i = 0; i < config.windows.Length; i++) { var table = config.windows[i]; var children = config.parentChildrenTable[table.parent] = new List<string>(); for (int j = 0; j < table.orderTables.Length; j++) { children.Add(table.orderTables[j].window); } config.childWindows.AddRange(children); } } return config; } public bool FindChildWindow(string _parent, int _order, out string _child) { @@ -63,6 +75,23 @@ return false; } public List<string> FindChildWindows(string _parent) { if (parentChildrenTable.ContainsKey(_parent)) { return parentChildrenTable[_parent]; } else { return null; } } public bool IsChildWindow(string _name) { return childWindows.Contains(_name); } [Serializable] public struct WindowTable {