Esempio n. 1
0
        private void OnGUI()
        {
            if (EditorApplication.isCompiling)
            {
                return;
            }

            var execBuild = false;
            if (config == null)
            {
                config = AssetDatabase.LoadAssetAtPath<BuildConfig>(savePath);
                if (config == null)
                {
                    config = CreateInstance<BuildConfig>();
                }
            }

            if (config == null)
            {
                return;
            }

            UpdateStyles();

            //tool bar
            GUILayout.BeginHorizontal(Styles.toolbar);
            {
                if (GUILayout.Button("Add", Styles.toolbarButton))
                {
                    config.filters.Add(new BuildAssetFilter());
                }

                if (GUILayout.Button("Save", Styles.toolbarButton))
                {
                    Save();
                }

                GUILayout.FlexibleSpace();

                if (GUILayout.Button("Build", Styles.toolbarButton))
                {
                    execBuild = true;
                }
            }
            GUILayout.EndHorizontal();

            //context
            GUILayout.BeginVertical();

            GUILayout.Space(10);
            GUILayout.BeginHorizontal();
            {
                GUILayout.Label("Path", GUILayout.Width(400));
                GUILayout.Label("", GUILayout.Width(80));
                GUILayout.Label("Filter(*.xxx)", GUILayout.Width(100));
                GUILayout.Label("ABName", GUILayout.Width(100));
                GUILayout.Label("", GUILayout.Width(60));
                GUILayout.Label("", GUILayout.Width(100));
                GUILayout.Label("删除", GUILayout.Width(40));
            }
            GUILayout.EndHorizontal();
            Position = GUILayout.BeginScrollView(Position, GUILayout.Width(Screen.width), GUILayout.ExpandHeight(true));
            for (int i = 0; i < config.filters.Count; i++)
            {
                var filter = config.filters[i];
                GUILayout.BeginHorizontal();
                {
                    filter.path = GUILayout.TextField(filter.path, GUILayout.Width(400));
                    if (GUILayout.Button("Select", GUILayout.Width(80)))
                    {
                        string dataPath = Application.dataPath;
                        string selectedPath = EditorUtility.OpenFolderPanel("Path", dataPath, "");
                        if (!string.IsNullOrEmpty(selectedPath))
                        {
                            if (selectedPath.StartsWith(dataPath))
                            {
                                filter.path = "Assets/" + selectedPath.Substring(dataPath.Length + 1);
                            }
                            else
                            {
                                ShowNotification(new GUIContent("不能在Assets目录之外!"));
                            }
                        }
                    }
                    if (filter.atlas)
                    {
                        GUILayout.Label("*.spriteatlas", GUILayout.Width(100));
                    }
                    else
                    {
                        filter.filter = GUILayout.TextField(filter.filter, GUILayout.Width(100));
                        if (filter.filter.Contains(".spriteatlas"))
                        {
                            filter.atlas = true;
                            filter.filter = "";
                        }
                    }
                    filter.abname = GUILayout.TextField(filter.abname, GUILayout.Width(100));
                    filter.atlas = GUILayout.Toggle(filter.atlas, "图集", GUILayout.Width(60));
                    filter.subdirs = GUILayout.Toggle(filter.subdirs, "包含子文件夹", GUILayout.Width(100));
                    if (GUILayout.Button("X", GUILayout.ExpandWidth(false)))
                    {
                        config.filters.RemoveAt(i);
                        i--;
                    }
                }
                GUILayout.EndHorizontal();
            }

            GUILayout.EndScrollView();
            GUILayout.EndVertical();

            //set dirty
            if (GUI.changed)
            {
                EditorUtility.SetDirty(config);
            }

            if (execBuild)
            {
                Build();
            }
        }
Esempio n. 2
0
 BuildPanel()
 {
     config = null;
 }