private BaseUi JudgeShowUI(E_UIID uiid) //判断要显示的是哪个UI,返回现在显示的UI { //判断要显示的窗体是否正在显示,如果正在显示则不用处理 if (dicShowUi.ContainsKey(uiid)) { return(null); } BaseUi baseUi = GetGaseUI(uiid); if (baseUi == null)//判断需要显示的窗体是否加载过 { //拿到UIID然后向UI路径字典取值 string path = GameDefine.dicPath[uiid]; GameObject loadUi = Resources.Load <GameObject>(path); if (loadUi != null) { //路径正确,实例化窗体 GameObject willShowUI = Instantiate(loadUi); baseUi = willShowUI.GetComponent <BaseUi>(); Type type = GameDefine.GetUiScriptType(uiid); if (baseUi == null) { //说明窗体是没有挂载脚本,自动添加对应的UI脚本 baseUi = willShowUI.AddComponent(type) as BaseUi; } else { baseUi = willShowUI.GetComponent(type) as BaseUi; } Transform uiRoot = GetTheRoot(baseUi); GameTool.AddChildToParent(uiRoot, willShowUI.transform); //位置不正确,重设UI位置 willShowUI.GetComponent <RectTransform>().sizeDelta = Vector2.zero; willShowUI.GetComponent <RectTransform>().anchoredPosition3D = Vector3.zero; //窗体第一次加载,把该窗体缓存到aicAllUi字典。 dicAllUi.Add(uiid, baseUi); } else { Debug.Log("没有加载到" + uiid + "预制体"); } } else { baseUi.ShowUI(); } UpdateShowUiHedeUi(baseUi); return(baseUi); }