Exemplo n.º 1
0
        /// <summary>
        /// 实例化View时调用
        /// </summary>
        /// <param name="view"></param>
        protected override void OnInstantiateView(ViewBase view)
        {
            // 如果是Canvas,父对象设为Manager。
            if (view is TestUICanvas)
            {
                m_TestUICanvas = view as TestUICanvas;
                view.transform.SetParent(gameObject.transform, false);
                //// 这里添加设置Canvas的设置

                //m_TestUICanvas.canvas.renderMode = RenderMode.ScreenSpaceCamera;
                //m_TestUICanvas.canvas.worldCamera = Camera.main;
                //// 其它设置
            }
            // 如果不是Canvas而是Panel,设置父对象为选择的Canvas。
            else
            {
                // 如果有多个父对象Canvas,
                // 这里可以自定义添加判断设置哪个Canvas为父对象。
                if (view.viewName == TestUINames.Panel_TestUIDefaultPanel)
                {
                    if (m_DefaultCanvas == null)
                    {
                        throw new Exception("Default Canvas is null.");
                    }
                    view.transform.SetParent(m_DefaultCanvas.transform, false);


                    //// 也可以直接使用GetComponent获取组件

                    //TestUIManager manager = gameObject.GetComponent<TestUIManager>();
                    //if (manager.parentCanvas == null)
                    //{
                    //    throw new Exception("Parent Canvas in manager is null.");
                    //}
                    //view.transform.SetParent(manager.parentCanvas.transform);
                }
                else
                {
                    // 如果TestUICanvas没有被打开,就打开它。
                    // 需要注意,因为Canvas只是Panel的一个容器,不能让Canvas加入Stack。
                    if (m_TestUICanvas == null || !m_TestUICanvas.gameObject.activeSelf)
                    {
                        m_TestUICanvas = TestUIManager.views.OpenViewNotStack(TestUINames.Canvas_TestUICanvas, false) as TestUICanvas;
                        if (m_TestUICanvas == null)
                        {
                            throw new Exception("Open Test UI Canvas error.");
                        }
                    }

                    view.transform.SetParent(m_TestUICanvas.transform, false);
                    m_TestUICanvas.childPanelNames.Add(view.viewName);
                }
            }
        }
Exemplo n.º 2
0
 protected override void OnDispose()
 {
     m_DefaultCanvas = null;
     m_TestUICanvas  = null;
 }