public override void OnInspectorGUI() { if (target == null || EditorApplication.isPlaying) { return; } base.OnInspectorGUI(); if (string.IsNullOrEmpty(group.Name)) { group.Name = group.gameObject.name; } if (string.IsNullOrEmpty(group.ClassName)) { group.ClassName = group.gameObject.name; } MLuaUIPanel panel = MFindHelper.GetParentComponent <MLuaUIPanel>(group.transform); MLuaUIGroup parentGroup = MFindHelper.GetParentComponent <MLuaUIGroup>(group.transform); if (GUILayout.Button("标准化", GUILayout.Height(20))) { MLuaUIGroup[] cacheGroups = null; MLuaUICom[] cacheComponents = null; FillComponents(group.gameObject, ref cacheGroups, ref cacheComponents); } if (GUILayout.Button("生成Lua模版代码", GUILayout.Height(20))) { CreateScript(); } }
//得到此物体可包含的MLuaUIGroup和MLuaUICom public static KeyValuePair <MLuaUIGroup[], MLuaUICom[]> GetGroupsAndComs(GameObject go) { MLuaUIGroup[] h = go.GetComponentsInChildren <MLuaUIGroup>(true); List <MLuaUIGroup> groups = new List <MLuaUIGroup>(h); Dictionary <MLuaUIGroup, List <MLuaUICom> > comInGroup = new Dictionary <MLuaUIGroup, List <MLuaUICom> >(); Dictionary <MLuaUIGroup, List <MLuaUIGroup> > groupInGroup = new Dictionary <MLuaUIGroup, List <MLuaUIGroup> >(); List <MLuaUIGroup> panelGroup = new List <MLuaUIGroup>(); for (int i = 0; i < groups.Count; i++) { comInGroup[groups[i]] = new List <MLuaUICom>(); groupInGroup[groups[i]] = new List <MLuaUIGroup>(); } for (int i = 0; i < groups.Count; i++) { MLuaUIGroup parentGroup = MFindHelper.GetParentComponent <MLuaUIGroup>(groups[i].transform, go.transform); //如果Group父物体有Group则放入父物体Group中 if (parentGroup != null && groupInGroup.ContainsKey(parentGroup)) { groupInGroup[parentGroup].Add(groups[i]); } else { //没有则放入Panel的Group中 panelGroup.Add(groups[i]); } } foreach (var item in groupInGroup) { item.Key.Groups = item.Value.ToArray(); } MLuaUICom[] components = go.GetComponentsInChildren <MLuaUICom>(true); List <MLuaUICom> comList = new List <MLuaUICom>(); for (int i = 0; i < components.Length; i++) { components[i].UIPanel = go.GetComponent <MLuaUIPanel>(); MLuaUIGroup parentGroup = components[i].GetComponent <MLuaUIGroup>(); if (parentGroup == null) { parentGroup = MFindHelper.GetParentComponent <MLuaUIGroup>(components[i].transform, go.transform); } //如果Component父物体有Group则放入父物体Group中 if (parentGroup != null && comInGroup.ContainsKey(parentGroup)) { comInGroup[parentGroup].Add(components[i]); } else { //没有则放入Panel的ComRefs中 comList.Add(components[i]); } } foreach (var item in comInGroup) { item.Key.ComRefs = item.Value.ToArray(); } MLuaUICom[] coms = comList.ToArray(); //如果自己身上有MLuaUIGroup,做下处理 //MLuaUIGroup selfGroup = go.GetComponent<MLuaUIGroup>(); //if (selfGroup != null) //{ // panelGroup.Remove(selfGroup); // coms = selfGroup.ComRefs; //} KeyValuePair <MLuaUIGroup[], MLuaUICom[]> data = new KeyValuePair <MLuaUIGroup[], MLuaUICom[]>(panelGroup.ToArray(), coms); return(data); }