//预加载窗口物体进缓存 public void InitWindowCache(PEWindowEnum windowEnum, ResType resType, string luaName = "", ResCacheType cacheType = ResCacheType.Never) { PWindow pwindow = new PWindow(windowEnum, luaName); string windowName = pwindow.windowName; GameObject gb = null; if (!windowDic.ContainsKey(pwindow)) { gb = (GameObject)ResourceMgr.GetInstantiateOB(windowName, resType, cacheType); gb.name = windowName; gb.transform.parent = windowRootTrans; gb.transform.localPosition = Vector3.zero; gb.transform.localScale = Vector3.one; NGUITools.SetActive(gb, false); WindowBase windowBase = gb.GetComponent <WindowBase>(); if (windowBase == null) { windowBase = GetOrAddWindowHandle(gb, windowEnum, luaName); if (windowBase == null) { Debug.LogError("Can not Get " + windowName + " Handle Scripts"); return; } } windowDic.Add(pwindow, new PWindowType(windowBase, resType, cacheType)); windowBase.InitDic(); } }
public PWindow(PEWindowEnum windowEnum, string luaName) { this.windowEnum = windowEnum; if (luaName == "") { windowName = windowEnum.ToString(); } else { windowName = luaName; } }
//控制UI窗口的状态 open:窗口是否打开,state:状态控制参数,两者都传递到WindowBase的InitWindow()中去。 public void SetWindowState(PEWindowEnum windowEnum, ResType resType, string luaName = "", bool open = true, int state = 0) { PWindow pwindow = new PWindow(windowEnum, luaName); if (!windowDic.ContainsKey(pwindow)) { InitWindowCache(windowEnum, resType, luaName); } WindowBase wb = windowDic[pwindow].windowBase; wb.curWindowEnum = windowEnum; wb.luaWindowName = luaName; wb.InitWindow(open, state); }
//----------------------------------------------------------------// ///////////////////////////ToolMethonds///////////////////////////// //获取或添加窗口的根控制脚本 private WindowBase GetOrAddWindowHandle(GameObject gb, PEWindowEnum windowEnum, string luaName) { WindowBase windowBase = null; switch (windowEnum) { case PEWindowEnum.Login_window: windowBase = PEUITools.GetOrAddWindowHandle <HandleLoginWindow>(gb); break; case PEWindowEnum.Logined_window: windowBase = PEUITools.GetOrAddWindowHandle <HandleLoginedWindow>(gb); break; default: break; } return(windowBase); }