PanelInfor CreatePanelByConfg(UIPanelConfgInfor confg, bool createWhenNotExit) { if (confg == null) { Debug.LogError("SetPanelAtRightPanel Fail, Parameter is null"); return(null); } Debug.Log("CreatePanelByConfg .... " + confg.PanelName); #region Create Object BaseOn confg // GameObject uiAsset = null; GameObject obj = Resources.Load <GameObject>(ConstDefine.UIPanelResourcePath + confg.PanelPath); // Manager.ins.ResourceMgr.LoadAsset(ConstDefine.UIPanelResourcePath + confg.PanelPath, (obj => // { // uiAsset = obj as GameObject; // })); //if (uiAsset == null) //{ // Debug.LogError("SetPanelAtRightPanel l Fail >>Panel Not Exit " + confg.PanelPath); // return null; //} GameObject _panelObj = GameObject.Instantiate(obj); _panelObj.name = confg.PanelName; #endregion #region GetComponent Of This Obj ,Make Sure Inherit From ViewBaseFU_EX,Then Set Local psotion And Rotation Transform root = m_AllUIRootBaseOnLevelDic[confg.m_UIPanelLevel]; if (root == null) { Debug.LogError("SetPanelAtRightPanel Fail,Root is Null"); return(null); } if (confg.m_UIPanelLevel != UIPanelLevel.FixedDirectionUI || confg.IsParentRoot) { _panelObj.transform.SetParent(root); ///,Log4Helper.Info(">>>>>>> Set to Root"); } //主UI 和 根节点UI设置 else { PanelInfor _infor = LoadUIPanelByName("UIMainCanvasView", true); if (_infor == null) { Debug.LogError("CreatePanelByConfg Fail.... UIMainCanvasView Not Exit"); _panelObj.transform.SetParent(root); } else { _panelObj.transform.SetParent(_infor.m_Panel.transform); _panelObj.transform.localScale = Vector3.one; //主要的UI if (_panelObj.name != "UIMainView") { _panelObj.transform.SetAsFirstSibling(); } Debug.Log(" CreatePanelByConfg. MainMenu.." + _panelObj.gameObject.name); } } //根据UI类型设置不同的父节点 ViewBaseFU_EX _view = _panelObj.transform.GetComponent <ViewBaseFU_EX>(); if (_view == null) { Debug.LogError("CreatePanelByConfg Fail..Miss ViewBaseFU_EX :" + _panelObj.name); return(null); } //Set Panel At Confg Position And Rotation _panelObj.transform.localPosition = _view.m_InitialPosition; _panelObj.transform.localEulerAngles = _view.m_InitialAngle; #endregion #region Check And Record This Panel At m_AllInitialedPanel Type type = _view.GetType(); PanelInfor infor = new PanelInfor(_panelObj, _view); if (m_AllInitialedPanel.ContainsKey(type) == false) { m_AllInitialedPanel.Add(type, infor); //Record } else if (m_AllInitialedPanel[type] == null || m_AllInitialedPanel[type].m_Panel == null) { Debug.Log("CreatePanelByConfg , Object Destroyed ,Record Now " + confg.PanelName); m_AllInitialedPanel.Remove(type); m_AllInitialedPanel.Add(type, infor); //Record } else { m_AllInitialedPanel[type] = infor; //Record } #endregion _panelObj.gameObject.SetActive(false); return(infor); }
public ViewBaseFU_EX m_ViewControlScript; //控制脚本 public PanelInfor(GameObject obj, ViewBaseFU_EX viewScript) { m_Panel = obj; m_ViewControlScript = viewScript; }