private static void LoadRawView(UIViewDeploy viewDeploy, Action <UIBaseView> callback)
    {
        string viewPath = viewDeploy.viewPath;

        LoadResourceToViewLayer(viewPath, viewDeploy.uiViewLayer, gameObject =>
        {
            UIBaseView uiBaseView = null;
            if (!string.IsNullOrEmpty(viewDeploy.entityClass))
            {
                Type entityClass = Type.GetType(viewDeploy.entityClass);
                uiBaseView       = gameObject.AddComponent(entityClass).gameObject.GetComponent <UIBaseView>();
            }

            if (callback != null)
            {
                callback(uiBaseView);
            }
        });
    }
 public ViewNode(UIBaseView uiView, UIViewDeploy uiViewDeploy, object[] args)
 {
     this.uiView       = uiView;
     this.uiViewDeploy = uiViewDeploy;
     this.args         = args;
 }
    private static void LoadView(int id, Action <UIBaseView> callback, bool pushStack, params object[] args)
    {
        var canvas = canvasGo;

        if (id == preLoadId || id == 0)
        {
            return;
        }

        if (id == -1)
        {
            ShowMainViews(callback);
            return;
        }

        UIViewDeploy viewDeploy = Deploy.GetDeploy <UIViewDeploy>(1);

        if (viewDeploy)
        {
            ViewNode preViewNode = viewNodeStack.Count > 0 ? viewNodeStack.Peek() : null;
            ViewNode curViewNode = new ViewNode(null, viewDeploy, args);
            LoadRawView(viewDeploy, uiBaseView =>
            {
                if (viewDeploy.uiViewLayer == UIViewLayer.View)
                {
                    HidePreViews();
                }
                else
                {
                    viewNodeStack.Peek().ShowEffects(false);
                }

                uiBaseView.args    = args;
                curViewNode.uiView = uiBaseView;
                curViewNode.SetAsLastSibling(true);

                if (pushStack)
                {
                    viewNodeStack.Push(curViewNode);
                }

                if (curViewNode.CheckInViewLayer(UIViewLayer.View))
                {
                    ShowWidgetInToolbarLayer(curViewNode);
                }
                else
                {
                    ShowWidgetInToolbarLayer(preViewNode);
                }

                if (callback != null)
                {
                    callback(uiBaseView);
                }

                preLoadId = 0;
            });
        }
        else
        {
            Debug.LogErrorFormat("UIViewDeploy[id={0}] not found!", id);
        }
    }