Exemplo n.º 1
0
    public void ShowImmediately(ePopupMode mode, params object[] objs)
    {
        PopupBase obj = Load(mode);

        if (obj != null)
        {
            StackPopup(new PopupInfo(mode, obj, objs));
            Show(true, true);
        }
    }
Exemplo n.º 2
0
    public void Show(ePopupMode mode, params object[] objs)     //重载了上面的show
    {
        if (Application.isPlaying == false)
        {
            return;
        }

        //在这里只做了 停止当前的弹出框动画以及 讲现在的弹出框入栈的操作上面的show才是真正的show操作
        PopupBase obj = Load(mode);

        if (obj != null)
        {
            if (gameObject.activeInHierarchy == true && m_TWHide.IsPlaying())
            {
                m_TWHide.Stop();
            }

            StackPopup(new PopupInfo(mode, obj, objs));
            Show(true, obj.bShowImmediately);
        }
    }
Exemplo n.º 3
0
    PopupBase Load(ePopupMode mode)     //加载弹出框
    {
        PopupBase result = null;

        //Debug.LogFormat("Load {0}", mode);
        if (mPopupCache.TryGetValue(mode, out result) == true)         //如果字典中已经有了就直接返回
        {
            return(result);
        }

        string classname = string.Format("Popup{0}", mode.ToString());      //根据不同的mode获取不停的预设体来创建弹出框
        string path      = string.Format("Prefab/Popup/{0}", classname);    //生成路径
        //Debug.LogFormat("{0}", path);
        Object loadPrefab = Resources.Load(path, typeof(GameObject));       //加载预设体

        if (loadPrefab != null)
        {
            //设置预设体的信息
            GameObject obj = (Instantiate(loadPrefab) as GameObject);             //实例化一个弹出框 并把它转换为GameObj类型
            obj.transform.parent        = contents.transform;
            obj.transform.localPosition = Vector3.zero;
            obj.transform.localScale    = Vector3.one;
            obj.SetActive(false);

            var popup_base = obj.GetComponent <PopupBase>();       //为啥能得到这个控件
            if (mPopupCache.ContainsKey(mode) == false)            //如果没有这个类型的弹出框
            {
                mPopupCache.Add(mode, popup_base);                 //讲预设体和对应的mode名称存入字典当中
            }

            return(popup_base);
        }
        else
        {
            Debug.LogError("Resources.Load() failed. " + path);
        }

        return(result);
    }
Exemplo n.º 4
0
    public void StackPopup(ePopupMode mode, params object[] objs)     //入栈
    {
        PopupInfo menu = new PopupInfo(mode, null, objs);

        mPopupStack.Insert(0, menu);
    }
Exemplo n.º 5
0
 public PopupInfo(ePopupMode _mode, PopupBase _obj, params object[] _parms)         //构造函数
 {
     mode  = _mode;
     obj   = _obj;
     parms = _parms;
 }