Esempio n. 1
0
        private void DrawAcScenes()
        {
            GUILayout.BeginVertical(GUILayout.Width(ACStyles.SceneViewWidth));
            GUILayout.Label("SCENES " + _allAcScenes.Count);
            _scrollPos = GUILayout.BeginScrollView(_scrollPos);

            TryInitDrawAcScenesParams();

            for (int i = 0; i < _allAcScenes.Count; i++)
            {
                var acScene = _allAcScenes[i];

                bool lastToggle = _toggleStates[i];
                _toggleStates[i] = GUILayout.Toggle(_toggleStates[i], acScene.Name, ACWindow.ACStyles.SceneButton);

                if (!lastToggle && _toggleStates[i])
                {
                    EditorWindowHelper.ResetToggleStates(_toggleStates, i);
                    _curSelectScene = acScene;
                }
            }
            GUILayout.EndScrollView();
            GUILayout.EndVertical();

            if (_curSelectScene != null)
            {
                _curSelectScene.DrawAcModules();
            }
        }
Esempio n. 2
0
        public void DrawAcModules()
        {
            GUILayout.BeginVertical(GUILayout.Width(ACStyles.ModuleViewWidth));
            GUILayout.Label("MODULES " + _childModules.Count);
            _moduleScrollPos = GUILayout.BeginScrollView(_moduleScrollPos);

            TryInitDrawAcModulesParams();

            for (int i = 0; i < _childModules.Count; i++)
            {
                var childModule = _childModules[i];

                bool lastToggle = _moduleToggleStates[i];
                _moduleToggleStates[i] = GUILayout.Toggle(_moduleToggleStates[i], childModule.Name, ACWindow.ACStyles.ModuleButton);

                if (!lastToggle && _moduleToggleStates[i])
                {
                    EditorWindowHelper.ResetToggleStates(_moduleToggleStates, i);
                    _curSelectModule = childModule;
                }
            }
            GUILayout.EndScrollView();
            GUILayout.EndVertical();

            if (_curSelectModule != null)
            {
                _curSelectModule.DrawAcPrefabs();
            }
        }
Esempio n. 3
0
        private void DrawSprites(List <ACSprite> sprites)
        {
            for (int i = 0; i < sprites.Count; i++)
            {
                var sprite = sprites[i];

                GUILayout.BeginHorizontal();
                {
                    sprite.DrawIcon();

                    bool lastToggle = _toggleStates[i];
                    _toggleStates[i] = GUILayout.Toggle(_toggleStates[i], sprite.AssetFile, ACWindow.ACStyles.SpriteButton,
                                                        GUILayout.Height(ACStyles.IconSize), GUILayout.Height(ACStyles.IconSize));

                    if (!lastToggle && _toggleStates[i])
                    {
                        _curSelectSprite = sprite;
                        EditorWindowHelper.ResetToggleStates(_toggleStates, i);

                        Selection.activeObject = AssetDatabase.LoadMainAssetAtPath(sprite.AssetFile);
                        EditorGUIUtility.PingObject(Selection.activeObject);
                    }
                }
                GUILayout.EndHorizontal();
            }
        }
Esempio n. 4
0
 private void TryInitDrawAcSpritesParams()
 {
     if (_spriteToggleStates.Count == 0)
     {
         int spriteCount = _acSprites.Count;
         if (spriteCount > 0)
         {
             _curSelectSprite    = _acSprites[0];
             _spriteToggleStates = EditorWindowHelper.InitToggleStates(spriteCount);
         }
     }
 }
Esempio n. 5
0
 protected override void TryInitDrawAcPrefabsParams()
 {
     if (_prefabToggleStates.Count == 0)
     {
         int prefabCount = _childPrefabs.Count;
         if (_childPrefabs.Count > 0)
         {
             _curSelectPrefab    = _childPrefabs[0];
             _prefabToggleStates = EditorWindowHelper.InitToggleStates(prefabCount);
         }
     }
 }
Esempio n. 6
0
 private void TryInitDrawAcModulesParams()
 {
     if (_moduleToggleStates.Count == 0)
     {
         int moduleConut = _childModules.Count;
         if (moduleConut > 0)
         {
             _curSelectModule    = _childModules[0];
             _moduleToggleStates = EditorWindowHelper.InitToggleStates(moduleConut);
         }
     }
 }
Esempio n. 7
0
 private void TryInitDrawAcScenesParams()
 {
     if (_toggleStates.Count == 0)
     {
         int sceneCount = _allAcScenes.Count;
         if (sceneCount > 0)
         {
             _curSelectScene = _allAcScenes[0];
             _toggleStates   = EditorWindowHelper.InitToggleStates(sceneCount);
         }
     }
 }
Esempio n. 8
0
 private void TryInitDrawUnReferenceFolderRefSpritesParams()
 {
     if (_toggleStates.Count == 0)
     {
         int spriteCount = _unReferenceFolderRefSprites.Count;
         if (spriteCount > 0)
         {
             _curSelectSprite = _unReferenceFolderRefSprites[0];
             _toggleStates    = EditorWindowHelper.InitToggleStates(spriteCount);
         }
     }
 }
Esempio n. 9
0
        public ACPrefab(string file, ACModule parentModule)
        {
            File      = file;
            AssetFile = EditorWindowHelper.DataPathToAssetPath(file);

            ParentModule = parentModule;

            string fileName = Path.GetFileName(file);
            {
                fileName = Regex.Replace(fileName, ".*?_", "", RegexOptions.IgnoreCase);
                Name     = Regex.Replace(fileName, ".prefab", "", RegexOptions.IgnoreCase);
            }
        }
    protected override void OnDrawGUI()
    {
        DrawTranslations();

        EditorWindowHelper.DrawUILine(Color.grey);

        DrawAddTranslation();

        EditorWindowHelper.DrawUILine(Color.grey);

        if (GUILayout.Button("Save"))
        {
            EditorUtility.SetDirty(_currentLanguageData);
            AssetDatabase.SaveAssets();
            Close();
        }
    }
Esempio n. 11
0
        protected override void DrawAcPrefabsContent()
        {
            for (int i = 0; i < _childPrefabs.Count; i++)
            {
                var childPrefab = _childPrefabs[i];

                bool lastToggle = _prefabToggleStates[i];
                _prefabToggleStates[i] = GUILayout.Toggle(_prefabToggleStates[i], childPrefab.Name, ACWindow.ACStyles.PrefabButton);

                if (!lastToggle && _prefabToggleStates[i])
                {
                    EditorWindowHelper.ResetToggleStates(_prefabToggleStates, i);
                    _curSelectPrefab = childPrefab;

                    OnSelectPrefab(_curSelectPrefab);
                }
            }
        }
Esempio n. 12
0
        public void DrawAcSprites()
        {
            GUILayout.BeginVertical(GUILayout.Width(ACStyles.SpriteViewWidth));
            GUILayout.Label("SPRITES " + _acSprites.Count);
            _spriteScrollPos = GUILayout.BeginScrollView(_spriteScrollPos);

            TryInitDrawAcSpritesParams();

            for (int i = 0; i < _acSprites.Count; i++)
            {
                var sprite = _acSprites[i];

                GUILayout.BeginHorizontal();
                {
                    sprite.DrawIcon();

                    bool lastToggle = _spriteToggleStates[i];
                    _spriteToggleStates[i] = GUILayout.Toggle(_spriteToggleStates[i], sprite.AssetFile, ACWindow.ACStyles.SpriteButton,
                                                              GUILayout.Height(ACStyles.IconSize), GUILayout.Height(ACStyles.IconSize));

                    if (!lastToggle && _spriteToggleStates[i])
                    {
                        _curSelectSprite = sprite;
                        EditorWindowHelper.ResetToggleStates(_spriteToggleStates, i);

                        Selection.activeObject = AssetDatabase.LoadMainAssetAtPath(sprite.AssetFile);
                        EditorGUIUtility.PingObject(Selection.activeObject);
                    }
                }
                GUILayout.EndHorizontal();
            }

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

            if (_curSelectSprite != null)
            {
                _curSelectSprite.DrawReferences();
            }
        }
Esempio n. 13
0
        public void DrawReferences(bool setWidth = true)
        {
            GUILayout.BeginVertical();
            GUILayout.Label("REFERENCE PREFABS " + _allReferencePrefabs.Count);

            if (setWidth)
            {
                _refScrollPos = GUILayout.BeginScrollView(_refScrollPos, GUILayout.Width(ACStyles.PrefabViewWidth));
            }
            else
            {
                _refScrollPos = GUILayout.BeginScrollView(_refScrollPos);
            }

            if (_refToggleStates.Count == 0)
            {
                _refToggleStates = EditorWindowHelper.InitToggleStates(_allReferencePrefabs.Count);
            }

            for (int i = 0; i < _allReferencePrefabs.Count; i++)
            {
                var acReferencePrefab = _allReferencePrefabs[i];

                bool lastToggle = _refToggleStates[i];
                _refToggleStates[i] = GUILayout.Toggle(_refToggleStates[i], acReferencePrefab.Name, ACWindow.ACStyles.PrefabButton);
                if (!lastToggle && _refToggleStates[i])
                {
                    EditorWindowHelper.ResetToggleStates(_refToggleStates, i);

                    Selection.activeObject = AssetDatabase.LoadMainAssetAtPath(acReferencePrefab.AssetFile);
                    EditorGUIUtility.PingObject(Selection.activeObject);
                }
            }

            GUILayout.EndScrollView();
            GUILayout.EndVertical();
        }
Esempio n. 14
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();
        }
Esempio n. 15
0
 /// <summary>
 /// 整理收集的所有Sprites
 /// </summary>
 public void StartAtlasCollect(float minBackgroundWidth, float minBackgroundHeight, string spriteOutFolder)
 {
     MoveAllUseSpritesToFolder(minBackgroundWidth, minBackgroundHeight, spriteOutFolder);
     MoveAllUnUseSpritesToFolder(spriteOutFolder);
     EditorWindowHelper.DeleteEmptyFolders(spriteOutFolder);
 }