//private Dictionary<string, string> names; private void InitSelectionData() { mGo = Selection.activeGameObject; mContainers.Clear(); mContainerPaths.Clear(); mObjectPaths.Clear(); mTotalComponents = 0; if (mGo == null) { return; } mGo.GetComponentsInChildren <ObjectContainer>(true, mContainers); for (int i = 0; i < mContainers.Count; i++) { ObjectContainer oc = mContainers[i]; mContainerPaths.Add(UIPrefabPostProcess.GetObjectPath(oc.transform, mGo.transform)); List <string> paths = new List <string>(); for (int j = 0; j < oc.GetObjectItems().Count; j++) { ObjectContainer.single_obj_item so = oc.GetObjectItems()[j]; string p = so.component == null?string.Format("{0}(null)", so.name) : UIPrefabPostProcess.GetObjectPath(so.component.transform, mGo.transform); paths.Add(string.Format("控件路径 {0} ", p)); mTotalComponents++; } mObjectPaths.Add(paths); } }
private void RefreshGUI() { if (Validate()) { string name = Selection.activeGameObject.name; GUILayout.Label(string.Format("找到{0}个ObjectContainer,{1}个UI控件", mContainers.Count, mTotalComponents)); EditorGUILayout.BeginHorizontal(); //mLuaViewPathRoot = EditorGUILayout.TextField("View层代码目录", mLuaViewPathRoot); EditorGUILayout.LabelField("View层代码目录: " + mLuaViewPathRoot); /* * if (GUILayout.Button("选择", GUILayout.MaxWidth(120f))) * { * mLuaViewPathRoot = EditorUtility.SaveFolderPanel("选择代码存储目录", "", Application.dataPath); * } */ EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); //mLuaCotrollerPathRoot = EditorGUILayout.TextField("Control层代码目录", mLuaCotrollerPathRoot); EditorGUILayout.LabelField("Control层代码目录: " + mLuaCotrollerPathRoot); /* * if (GUILayout.Button("选择", GUILayout.MaxWidth(120f))) * { * mLuaCotrollerPathRoot = EditorUtility.SaveFolderPanel("选择代码存储目录", "", Application.dataPath); * } */ EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label("UI初始化Lua文件:" + UIViewUtils.GetLuaViewName(name) + "." + "lua"); if (GUILayout.Button("ProcessPrefab", GUILayout.MaxWidth(120f))) { EditorApplication.ExecuteMenuItem("Assets/UI/ProcessPrefab"); InitSelectionData(); } EditorGUILayout.EndHorizontal(); if (mShowPosition = EditorGUILayout.Foldout(mShowPosition, "控件概要")) { mScrollPosition = EditorGUILayout.BeginScrollView(mScrollPosition); for (int i = 0; i < mContainers.Count; i++) { ObjectContainer oc = mContainers[i]; EditorGUILayout.LabelField(string.Format("ObjectContainer : {0}, 控制数量 : {1}", mContainerPaths[i], oc.GetObjectItems().Count)); List <string> paths = mObjectPaths[i]; for (int j = 0; j < oc.GetObjectItems().Count; j++) { ObjectContainer.single_obj_item so = oc.GetObjectItems()[j]; EditorGUILayout.BeginHorizontal(); GUILayout.Space(16f); EditorGUILayout.LabelField(paths[j]); GameObject go = so.component == null ? null : so.component.gameObject; EditorGUILayout.ObjectField(GUIContent.none, go, typeof(GameObject), true, GUILayout.MaxWidth(240f)); EditorGUILayout.EndHorizontal(); } GUILayout.Space(4f); } //GUILayout.Space(150); /*foreach (var i in names) * { * EditorGUILayout.BeginHorizontal(); * GameObject _g = Selection.activeGameObject.transform.Find(i.Value.Substring(Selection.activeGameObject.name.Length + 1, i.Value.Length - Selection.activeGameObject.name.Length - 1)).gameObject; * GUILayout.Label(string.Format("控件路径 {0} ", i.Value)); * EditorGUILayout.ObjectField("", _g, typeof(GameObject), true, GUILayout.Width(200)); * //EditorGUILayout.ObjectField(string.Format("控件路径 {1} 控件名称:{0} ", i.Key.Substring(0), i.Value), _g, typeof(GameObject), true); * //GUILayout.Label(string.Format("控件路径 {1} 控件名称:{0} ", i.Key.Substring(0), i.Value)); * EditorGUILayout.EndHorizontal(); * }*/ EditorGUILayout.EndScrollView(); } isExportController = EditorGUILayout.BeginToggleGroup("是否导出Controller层结构代码", isExportController); EditorGUILayout.EndToggleGroup(); string path = Path.Combine(Application.dataPath + "/" + mLuaCotrollerPathRoot, UIViewUtils.GetLuaControllerName(name) + ".lua"); if (File.Exists(path) && isExportController) { GUILayout.Label(string.Format("Control层结构代码已经存在,选择导出将会被覆盖")); } if (GUILayout.Button("生成Lua")) { if (UIPrefabPostProcess.LogRepeatNames(mGo)) { ShowNotification(new GUIContent("含有重名,不可导出")); } else { Export(); } } } else { EditorGUILayout.Separator(); EditorGUILayout.Separator(); EditorGUILayout.Separator(); EditorGUILayout.Separator(); EditorGUILayout.Separator(); EditorGUILayout.Separator(); GUILayout.Label("当前对象不符合规则,不可以生成Lua脚本,请检查..."); } }