Ejemplo n.º 1
0
 /// <summary>
 /// 显示一个View面板
 /// </summary>
 /// <param name="viewName">View名称, 也是Resources下View预制体资源相对路径</param>
 /// <param name="layer">显示在哪一层</param>
 public void Show(string viewName, E_ViewLayer layer = E_ViewLayer.Middle)
 {
     if (viewName == null)
     {
         throw new System.ArgumentNullException();
     }
     if (viewDic.ContainsKey(viewName))
     {
         BaseView view = viewDic[viewName];
         ShowView(view, layer);
     }
     else
     {
         CreateAsync(viewName);
     }
 }
Ejemplo n.º 2
0
    private void ShowView(BaseView view, E_ViewLayer layer)
    {
        RectTransform layerRect = GetLayerTransform(layer);

        view.transform.SetParent(layerRect);
        RectTransform rect = view.transform as RectTransform;

        rect.pivot         = Vector2.one / 2f;
        rect.localPosition = Vector3.zero;
        rect.localRotation = Quaternion.identity;
        rect.localScale    = Vector3.one;
        rect.offsetMin     = Vector2.zero;
        rect.offsetMax     = Vector2.zero;
        view.gameObject.SetActive(true);
        view.OnShow();
    }
Ejemplo n.º 3
0
    private RectTransform GetLayerTransform(E_ViewLayer layer)
    {
        switch (layer)
        {
        case E_ViewLayer.Bottom:
            return(bottom);

        case E_ViewLayer.Middle:
            return(middle);

        case E_ViewLayer.Top:
            return(top);

        case E_ViewLayer.System:
            return(system);
        }
        return(middle);
    }
Ejemplo n.º 4
0
 public void CreateAsync(string viewName, bool isShow = true, E_ViewLayer layer = E_ViewLayer.Middle)
 {
     if (loadingSet.Contains(viewName))
     {
         Debug.LogWarning($"Try to show view {viewName} whitch is loading!");
         return;
     }
     loadingSet.Add(viewName);
     ResMgr.Instance.LoadAsync <GameObject>(viewName, (viewObj) =>
     {
         loadingSet.Remove(viewName);
         if (viewObj == null)
         {
             Debug.LogWarning($"Load view {viewName} failed!");
             return;
         }
         BaseView view = viewObj.GetComponent <BaseView>();
         if (view == null)
         {
             Debug.LogWarning($"View {viewName} do not have BaseView component!");
             return;
         }
         view.Name         = viewName;
         viewDic[viewName] = view;
         // view销毁时从字典中移除 (重要)
         view.destroyEvent += () =>
         {
             if (viewDic.ContainsKey(viewName))
             {
                 viewDic.Remove(viewName);
             }
         };
         if (isShow)
         {
             ShowView(view, layer);
         }
     });
 }
Ejemplo n.º 5
0
 /// <summary>
 /// 显示一个View, 不存在时自动异步加载显示
 /// </summary>
 /// <param name="viewName">View名称, Resources下的View路径</param>
 /// <param name="layer">显示层级</param>
 public void ShowView(string viewName, E_ViewLayer layer = E_ViewLayer.Middle)
 {
     ViewMgr.Instance.Show(viewName, layer);
 }