public static void LoadWidget(string viewPath, UIViewLayer viewLayer, Type type, Action <UIBaseWidget> callback = null)
 {
     LoadResourceToViewLayer(viewPath, viewLayer, obj =>
     {
         Component component = obj.AddComponent(type);
         if (callback != null)
         {
             callback(component.GetComponent <UIBaseWidget>());
         }
     });
 }
    private static void LoadResourceToViewLayer(string viewPath, UIViewLayer viewLayer, Action <GameObject> callback)
    {
        ResourcesDatabase.Load(viewPath, _object =>
        {
            GameObject viewGo       = GameObject.Instantiate(_object) as GameObject;
            RectTransform rectTrans = viewGo.GetComponent <RectTransform>();

            rectTrans.SetParent(canvasGo.transform.Find(viewLayer.ToString()), false);

            callback(viewGo);
        });
    }
 public void ShowAsSecondView(UIViewLayer currViewLayer)
 {
     if (CheckViewExist())
     {
         ShowAsSecondViewImpl(currViewLayer);
     }
     else
     {
         LoadRawView(uiViewDeploy, _uiView =>
         {
             uiView      = _uiView;
             uiView.args = args;
             ShowAsSecondViewImpl(currViewLayer);
         });
     }
 }
Example #4
0
 //关闭一层所有界面
 public void HideViews(UIViewLayer layer)
 {
     if (!viewDic.ContainsKey(layer))
     {
         UtilityHelper.LogError(string.Format("Hide views error: {0}", layer));
         return;
     }
     UIViewBase[] views = viewDic[layer].PopupAll();
     if (views != null)
     {
         for (int i = 0; i < views.Length; ++i)
         {
             viewList.Remove(views[i]);
             SchemeViewCache(views[i]);
         }
         UpdateViewHideState();
     }
 }
    private static UIBaseWidget FindWidgetInLayers(UIViewLayer viewLayer, Type type)
    {
        Transform layerRect = canvasGo.transform.Find(viewLayer.ToString());

        if (layerRect)
        {
            for (int i = 0; i < layerRect.childCount; i++)
            {
                Transform childRect = layerRect.GetChild(i);
                Component component = childRect.GetComponent(type);
                if (component)
                {
                    return(component.GetComponent <UIBaseWidget>());
                }
            }
        }

        return(null);
    }
    //关闭一层全部界面
    public void HideViews(UIViewLayer layer)
    {
        if (viewLayerDic.ContainsKey(layer) == false)
        {
            Debug.LogError($"隐藏层级失败: {layer}");
            return;
        }

        UIViewBase[] views = viewLayerDic[layer].PopupAll();
        if (views != null)
        {
            for (int i = 0; i < views.Length; i++)
            {
                viewList.Remove(views[i]);
                SchemeViewCache(views[i]);
            }

            UpdateViewHideState();
        }
    }
    public static void LoadWidgetSingleton(string viewPath, UIViewLayer viewLayer, Type type, Action <UIBaseWidget> callback = null)
    {
        UIBaseWidget targetWidget = FindWidgetInLayers(viewLayer, type);

        if (targetWidget)
        {
            if (callback != null)
            {
                callback(targetWidget);
            }
        }
        else
        {
            List <Action <UIBaseWidget> > callbackList = null;
            if (loadingDict.TryGetValue(viewPath, out callbackList) && callbackList.Count > 0)
            {
                loadingDict[viewPath].Add(callback);
            }
            else
            {
                callbackList = callbackList ?? new List <Action <UIBaseWidget> >();
                callbackList.Add(callback);
                loadingDict.Add(viewPath, callbackList);
                LoadWidget(viewPath, viewLayer, type, uiBaseWidget =>
                {
                    foreach (Action <UIBaseWidget> cb in callbackList)
                    {
                        if (cb != null)
                        {
                            cb(uiBaseWidget);
                        }
                    }
                    loadingDict.Remove(viewPath);
                });
            }
        }
    }
    public static void LoadWidgetSingleton(string viewPath, UIViewLayer viewLayer, string typeStr, Action <UIBaseWidget> callback = null)
    {
        Type type = Type.GetType(typeStr);

        LoadWidgetSingleton(viewPath, viewLayer, type, callback);
    }
        private void ShowAsSecondViewImpl(UIViewLayer currViewLayer)
        {
            bool checkViewShow = currViewLayer == UIViewLayer.FullView;

            SetAsSiblingIndex(checkViewShow, viewNodeStack.Count);
        }
 public bool CheckInViewLayer(UIViewLayer viewLayer)
 {
     return(uiViewDeploy != null && uiViewDeploy.uiViewLayer == viewLayer);
 }