Ejemplo n.º 1
0
        public ACProject(string prefabTargetFolder, string uiSpriteTargetFolder, AtlasCollectRule atlasCollectRule)
        {
            _uiSpriteTargetFolder = uiSpriteTargetFolder.ToLower();
            _atlasCollectRule     = atlasCollectRule;

            InitAllAcScenes(prefabTargetFolder);
            CollectAllSprites();

            _referenceFolderRefSprites   = new List <ACSprite>(_allReferenceFolderSpritesDic.Values);
            _unReferenceFolderRefSprites = new List <ACSprite>(_allUnReferenceFolderSpritesDic.Values);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 绘制设置
        /// </summary>
        private void DrawSetting()
        {
            GUILayout.BeginVertical();
            {
                GUILayout.BeginHorizontal();
                _prefabTargetFolder = EditorGUILayout.TextField("目标UIPrefab的目录", _prefabTargetFolder);
                if (GUILayout.Button("Choose", GUILayout.Width(70f)))
                {
                    _prefabTargetFolder = EditorUtility.OpenFolderPanel("选择要整理UIPrefab的目录", Application.dataPath, "");
                    PlayerPrefs.SetString("SpriteCollectTargetPath", _prefabTargetFolder);
                }
                GUILayout.EndHorizontal();

                GUILayout.BeginHorizontal();
                _spriteOutFolder = EditorGUILayout.TextField("输出Sprite的目录", _spriteOutFolder);
                if (GUILayout.Button("Choose", GUILayout.Width(70f)))
                {
                    _spriteOutFolder = EditorUtility.OpenFolderPanel("选择要输出Sprite的目录", Application.dataPath, "");
                    _spriteOutFolder = EditorWindowHelper.DataPathToAssetPath(_spriteOutFolder);
                    PlayerPrefs.SetString("SpriteCollectOutputPath", _spriteOutFolder);
                }
                GUILayout.EndHorizontal();

                GUILayout.BeginHorizontal();
                _spriteReferencetFolder = EditorGUILayout.TextField("关联Sprite的目录", _spriteReferencetFolder);
                if (GUILayout.Button("Choose", GUILayout.Width(70f)))
                {
                    _spriteReferencetFolder = EditorUtility.OpenFolderPanel("选择要关联Sprite的目录", Application.dataPath, "");
                    _spriteReferencetFolder = EditorWindowHelper.DataPathToAssetPath(_spriteReferencetFolder);
                    PlayerPrefs.SetString("SpriteCollectReferencePath", _spriteReferencetFolder);
                }
                GUILayout.EndHorizontal();

                GUILayout.BeginHorizontal();
                _atlasCollectRule = (AtlasCollectRule)EditorGUILayout.EnumPopup("图集整理规则", _atlasCollectRule);
                GUILayout.EndHorizontal();

                ACProject.SceneBackgounrdFolderName = EditorGUILayout.TextField("场景背景目录", ACProject.SceneBackgounrdFolderName);
                ACProject.SceneCommonFolderName     = EditorGUILayout.TextField("场景图集通用目录", ACProject.SceneCommonFolderName);
                ACProject.ModuleCommonFolderName    = EditorGUILayout.TextField("模块图集通用目录", ACProject.ModuleCommonFolderName);

                GUILayout.BeginHorizontal();
                EditorGUILayout.LabelField("超出范围的Sprite会被移动到background目录");
                _width  = EditorGUILayout.FloatField("背景图最小宽度", _width);
                _height = EditorGUILayout.FloatField("背景图最小高度", _height);
                GUILayout.EndHorizontal();

                if (_acProject != null)
                {
                    EditorGUILayout.LabelField("待整理的UIPrefab个数", _acProject.PrefabCount.ToString());
                    EditorGUILayout.LabelField("待整理的Sprite个数", _acProject.AllSpriteCount.ToString());
                    EditorGUILayout.LabelField("待整理中被引用的Sprite个数", _acProject.RefSpriteCount.ToString());
                    EditorGUILayout.LabelField("待整理中未引用的Sprite个数", _acProject.UnRefSpriteCount.ToString());
                }

                if (GUILayout.Button("LOAD"))
                {
                    if (string.IsNullOrEmpty(_prefabTargetFolder))
                    {
                        ShowNotification(new GUIContent("目标UIPrefab的目录未设置!"));
                    }
                    else if (string.IsNullOrEmpty(_spriteReferencetFolder))
                    {
                        ShowNotification(new GUIContent("关联Sprite的目录未设置!"));
                    }
                    else
                    {
                        _acProject         = new ACProject(_prefabTargetFolder, _spriteReferencetFolder, _atlasCollectRule);
                        _startAtlasCollect = true;
                    }
                }

                if (GUILayout.Button("START"))
                {
                    if (!_startAtlasCollect || _acProject == null)
                    {
                        ShowNotification(new GUIContent("需要先点击LOAD按钮!"));
                        return;
                    }

                    if (string.IsNullOrEmpty(_spriteOutFolder))
                    {
                        ShowNotification(new GUIContent("输出Sprite的目录未设置!"));
                        return;
                    }

                    if (string.IsNullOrEmpty(ACProject.SceneBackgounrdFolderName))
                    {
                        ShowNotification(new GUIContent("场景背景目录不能为空!"));
                        return;
                    }

                    if (string.IsNullOrEmpty(ACProject.SceneCommonFolderName))
                    {
                        ShowNotification(new GUIContent("场景图集通用目录不能为空!"));
                        return;
                    }

                    if (string.IsNullOrEmpty(ACProject.ModuleCommonFolderName))
                    {
                        ShowNotification(new GUIContent("模块图集通用目录不能为空!"));
                        return;
                    }

                    _acProject.StartAtlasCollect(_width, _height, _spriteOutFolder);
                    _startAtlasCollect = false;

                    ShowNotification(new GUIContent("DONE!"));
                }
            }
            GUILayout.EndVertical();
            PlayerPrefs.Save();
        }