/// <summary>
        /// 用Prefab创建一个Widget
        /// </summary>
        public TezBaseWidget createWidget(TezBaseWidget prefab, RectTransform parent, TezWidgetLife life)
        {
            TezBaseWidget widget = null;

            switch (life)
            {
            case TezWidgetLife.Normal:
                widget = Instantiate(prefab, parent, false);
                break;

            case TezWidgetLife.TypeOnly:
                var type = prefab.GetType();
                if (m_WidgetWithType.TryGetValue(type, out widget))
                {
                    widget.reset();
                    return(widget);
                }
                else
                {
                    widget = Instantiate(prefab, parent, false);
                    m_WidgetWithType.Add(type, widget);
                }
                break;

            default:
                break;
            }

            widget.life = life;
            return(widget);
        }
        private Window createWindow <Window>(Window prefab
                                             , string name
                                             , TezLayer layer
                                             , TezWidgetLife life) where Window : TezWindow, ITezSinglePrefab
        {
            TezWindow window = null;

            switch (life)
            {
            case TezWidgetLife.Normal:
                window = Instantiate(prefab, layer.transform, false);
                break;

            case TezWidgetLife.TypeOnly:
                TezBaseWidget widget = null;
                var           type   = typeof(Window);
                if (m_WidgetWithType.TryGetValue(type, out widget))
                {
                    widget.reset();
                    return((Window)widget);
                }
                else
                {
                    window = Instantiate(prefab, layer.transform, false);
                    m_WidgetWithType.Add(type, window);
                }
                break;

            default:
                break;
            }

            int id = this.giveID();

            window.windowID   = id;
            window.windowName = name;
            window.layer      = layer;
            window.life       = life;

            m_WindowList[id] = window;
            return((Window)window);
        }
 public void removeTypeOnlyWidget(TezBaseWidget widget)
 {
     m_WidgetWithType.Remove(widget.GetType());
 }