/// <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); } } }
protected override void OnDispose() { m_DefaultCanvas = null; m_TestUICanvas = null; }