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); }
/// <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(); }