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(); } }
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(); } }
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(); } }
private void TryInitDrawAcSpritesParams() { if (_spriteToggleStates.Count == 0) { int spriteCount = _acSprites.Count; if (spriteCount > 0) { _curSelectSprite = _acSprites[0]; _spriteToggleStates = EditorWindowHelper.InitToggleStates(spriteCount); } } }
protected override void TryInitDrawAcPrefabsParams() { if (_prefabToggleStates.Count == 0) { int prefabCount = _childPrefabs.Count; if (_childPrefabs.Count > 0) { _curSelectPrefab = _childPrefabs[0]; _prefabToggleStates = EditorWindowHelper.InitToggleStates(prefabCount); } } }
private void TryInitDrawAcModulesParams() { if (_moduleToggleStates.Count == 0) { int moduleConut = _childModules.Count; if (moduleConut > 0) { _curSelectModule = _childModules[0]; _moduleToggleStates = EditorWindowHelper.InitToggleStates(moduleConut); } } }
private void TryInitDrawAcScenesParams() { if (_toggleStates.Count == 0) { int sceneCount = _allAcScenes.Count; if (sceneCount > 0) { _curSelectScene = _allAcScenes[0]; _toggleStates = EditorWindowHelper.InitToggleStates(sceneCount); } } }
private void TryInitDrawUnReferenceFolderRefSpritesParams() { if (_toggleStates.Count == 0) { int spriteCount = _unReferenceFolderRefSprites.Count; if (spriteCount > 0) { _curSelectSprite = _unReferenceFolderRefSprites[0]; _toggleStates = EditorWindowHelper.InitToggleStates(spriteCount); } } }
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(); } }
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); } } }
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(); } }
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(); }
/// <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(); }
/// <summary> /// 整理收集的所有Sprites /// </summary> public void StartAtlasCollect(float minBackgroundWidth, float minBackgroundHeight, string spriteOutFolder) { MoveAllUseSpritesToFolder(minBackgroundWidth, minBackgroundHeight, spriteOutFolder); MoveAllUnUseSpritesToFolder(spriteOutFolder); EditorWindowHelper.DeleteEmptyFolders(spriteOutFolder); }