Exemplo n.º 1
0
    private bool _showView(ViewBase caller, string callee, Hashtable arg, bool append = false)
    {
        Transform tar;

        if (!append)
        {
            tar = null;
            foreach (Transform i in tran)
            {
                if (i.name == callee)
                {
                    tar = i;
                    break;
                }
            }
        }
        else
        {
            if (caller == null)
            {
                Debug.Log("???????????????????μ???????????????");
                return(false);
            }
            tar = caller.transform.Find(callee);
        }
        if (tar == null)
        {
            Object t2 = LoadView(rootPath + callee);
            if (t2)
            {
                //if (caller!=null)
                //    caller.gameObject.SetActive(append);
                GameObject t3 = (GameObject)(t2);
                //Destroy(t2,0.3f);
                t3.name = callee;
                t3.transform.SetParent(tran, false);
                var v = BindViewScript(t3, callee);
                tar = t3.transform;
                //PushViewToStack(v);
                v.Init(arg);
                //v.OnViewShow(arg);
                //return true;
            }
            else
            {
                Debug.Log("load view failed:" + callee);
                return(false);
            }
        }
        bool overlay = false;

        //
        if (caller != null)
        {
            caller.gameObject.SetActive(append);
        }
        var old = PeekTop();

        if (old != null)
        {
            old.gameObject.SetActive(append);
        }
        tar.gameObject.SetActive(true);
        var t_view = tar.GetComponent <ViewBase>();

        if (!append)
        {
            if (old != null)
            {
                old.Hide(old.LastArg);
            }
            if (!overLayView)
            {
                PushViewToStack(t_view);
            }
            else
            {
                overLayView = t_view;
            }
        }
        else
        {
            if (caller != null)
            {
                tar.SetParent(caller.transform, false);
                tar.SetAsLastSibling();
                caller.AddChild(t_view);
            }
            t_view.parent = caller;
        }
        if (caller != null)
        {
            t_view.Caller     = caller;
            t_view.CallerName = caller.GetType().Name;
        }
        canvasScaler.referenceResolution = layoutWH;
        if (!append)
        {
            t_view.Show(arg);
        }
        if (overLayView != null)
        {
            overLayView.transform.SetAsLastSibling();
        }
        GC();

        return(true);
    }