少年修仙传客户端代码仓库
client_Wu Xijin
2018-08-27 48c963425709dcd449fa5bc98049d2393dfd56ef
2948 移除多个子界面动画
2个文件已修改
72 ■■■■■ 已修改文件
System/WindowBase/Window.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/Common/WindowConfig.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | 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
    {