diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/OptionUI/OptionUI.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/OptionUI/OptionUI.cs index 0b242694..16d7bdac 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/OptionUI/OptionUI.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/OptionUI/OptionUI.cs @@ -92,27 +92,18 @@ namespace AxibugEmuOnline.Client { Canvas.ForceUpdateCanvases(); + var topParent = FindTopOptionUI(); + var totalWidth = GetTotalWidth(topParent); + + Vector2 end = new Vector2(-totalWidth, MenuRoot.anchoredPosition.y); + if (m_popTween != null) { - Vector2 end = new Vector2(-MenuRoot.rect.width, MenuRoot.anchoredPosition.y); m_popTween.ChangeEndValue(end, false); } else { - Vector2 end = new Vector2(-MenuRoot.rect.width, MenuRoot.anchoredPosition.y); - var topParent = m_parent; - while (topParent != null && topParent.m_parent != null) - { - topParent = topParent.m_parent; - } - if (topParent != null) - { - topParent.MenuRoot.anchoredPosition = end; - } - else - { - MenuRoot.anchoredPosition = end; - } + topParent.MenuRoot.anchoredPosition = end; } RebuildSelectIndex(); } @@ -223,7 +214,6 @@ namespace AxibugEmuOnline.Client if (!m_bPoped) { - m_bPoped = true; Vector2 start = new Vector2(0, MenuRoot.anchoredPosition.y); Vector2 end = new Vector2(-MenuRoot.rect.width, MenuRoot.anchoredPosition.y); @@ -234,19 +224,8 @@ namespace AxibugEmuOnline.Client var moveDelta = value - start; start = value; - var topParent = m_parent; - while (topParent != null && topParent.m_parent != null) - { - topParent = topParent.m_parent; - } - if (topParent != null) - { - topParent.MenuRoot.anchoredPosition += moveDelta; - } - else - { - MenuRoot.anchoredPosition += moveDelta; - } + var topParent = FindTopOptionUI(); + topParent.MenuRoot.anchoredPosition += moveDelta; }, end, 0.3f @@ -256,7 +235,30 @@ namespace AxibugEmuOnline.Client m_lastCS = CommandDispatcher.Instance.Mode; CommandDispatcher.Instance.Mode = CommandListener.ScheduleType.Normal; } + } + OptionUI FindTopOptionUI() + { + if (m_parent == null) return this; + + var topParent = m_parent; + while (topParent != null && topParent.m_parent != null) + { + topParent = topParent.m_parent; + } + + return topParent; + } + + static float GetTotalWidth(OptionUI root) + { + float totalWidth = root.MenuRoot.rect.width; + if (root.m_child != null) + { + totalWidth += GetTotalWidth(root.m_child); + } + + return totalWidth; } /// diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/Tools/Selector.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/Tools/Selector.cs index 2cf827fd..b4f5c840 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/Tools/Selector.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/Tools/Selector.cs @@ -21,8 +21,6 @@ namespace AxibugEmuOnline.Client get => m_target; set { - if (m_target == value) return; - m_target = value; if (m_target == null) {