예제 #1
0
        public async void Close(string winName)
        {
            UIComponent component = Get(winName);

            if (component == null)
            {
                $"找不到窗口{winName}".LogError();
                return;
            }

            if (component.TryGetComponent <UIAnimaComponent>(out var anima))
            {
                World.Instance.RunSystemOfTag <IUIClose>(anima);
                await anima.Close();
            }

            if (component.AutoHide)
            {
                component.rectTransform.gameObject.Hide();
            }
            if (component.ModuleUI && ModuleUiItems.Contains(component))
            {
                ModuleUiItems.Remove(component);
            }
            if (component.rectTransform.gameObject.activeSelf)
            {
                RunSystemAndChild <IUIClose>(component);
            }
            if (OpenItems.Contains(component))
            {
                OpenItems.Remove(component);
            }
            TopView = OpenItems.Count > 0 ? OpenItems[^ 1] : null;
예제 #2
0
        public async Task <UIComponent> Open(string winName, GameObject go = null)
        {
            UIComponent component = Get(winName) ?? await AddWindow(winName, go);

            if (!OpenItems.Contains(component))
            {
                OpenItems.Add(component);
            }
            else
            {
                Debug.LogWarning($"{winName} is already open");
                return(component);
            }

            if (component.AutoShow)
            {
                component.rectTransform.gameObject.Show();
            }

            if (component.ModuleUI)
            {
                if (!ModuleUiItems.Contains(component))
                {
                    ModuleUiItems.Add(component);
                    component.AddComponent <TopViewComponent>();
                }

                component.rectTransform.SetAsLastSibling();
            }
            else
            {
                component.SetWindowLayer(Transform.childCount - 1 - ModuleUiItems.Count);
            }

            if (component.rectTransform.gameObject.activeSelf)
            {
                RunSystemAndChild <IUIOpen>(component);
            }
            else
            {
                World.Instance.RunSystemOfTag <IUIOpen>(component);
            }

            if (!component.ModuleUI)
            {
                TopView = component;
            }

            if (component.TryGetComponent <UIAnimaComponent>(out var anima))
            {
                World.Instance.RunSystemOfTag <IUIOpen>(anima);
                await anima.Open();
            }

            return(component);
        }