Ejemplo n.º 1
0
        //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);
            }
        }
Ejemplo n.º 2
0
        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脚本,请检查...");
            }
        }