private Dictionary <string, LuaFunction> ctrlFuncDic = new Dictionary <string, LuaFunction>(); //缓存用到的方法,防止反复取用 void Awake() { luaMgr.Init(); luaMgr.Require(luaFile); luaClass = luaFile; if (luaClass.IndexOf("/") > 0) { luaClass = luaClass.Substring(luaClass.LastIndexOf("/") + 1); } object[] ret = luaMgr.CallFunction(luaClass + ".New"); if (ret == null || ret.Length == 0) { return; } else { uiView = ret[0] as LuaTable; } if (uiView == null) { return; } var func = uiView.Get <LuaFunction>("GetCtrl"); if (func != null) { ret = func.Call(uiView); if (ret != null && ret.Length > 0) { uiCtrl = ret[0] as LuaTable; } } uiView.Set("lb", this); foreach (var item in items) { Type t = GetUIType(item.type); if (t == null) { continue; } if (t == typeof(Image)) { uiView.Set(item.name, UITool.CreateUIImage(item.obj)); } else if (t == typeof(Text)) { uiView.Set(item.name, UITool.CreateUIText(item.obj)); } else if (t == typeof(RawImage)) { uiView.Set(item.name, UITool.CreateUITexture(item.obj)); } else if (t == typeof(Button)) { uiView.Set(item.name, UITool.CreateUIButton(item.obj)); } else if (t == typeof(UIEventListener)) { uiView.Set(item.name, UITool.CreateUIEventListener(item.obj)); } else if (t == typeof(InputField)) { uiView.Set(item.name, UITool.CreateUIInput(item.obj)); } } CtrlCallFunc("Awake", uiView); }