// AtlasEditorWindow.cs using UnityEditor; using UnityEngine; public class AtlasEditorWindow : EditorWindow { private AtlasConfiguration config; private Vector2 scrollPos; [MenuItem("Tools/Atlas Manager")] public static void ShowWindow() { GetWindow("Atlas Manager"); } private void OnEnable() { LoadOrCreateConfig(); } private void LoadOrCreateConfig() { config = AtlasConfiguration.instance; } private void OnGUI() { scrollPos = EditorGUILayout.BeginScrollView(scrollPos); EditorGUILayout.Space(); EditorGUILayout.LabelField("Atlas Configuration", EditorStyles.boldLabel); if (config == null) return; DrawConfigurationGUI(); EditorGUILayout.EndScrollView(); } private void DrawConfigurationGUI() { EditorGUI.BeginChangeCheck(); EditorGUILayout.Space(); EditorGUILayout.LabelField("Paths", EditorStyles.boldLabel); config.atlasOutputPath = EditorGUILayout.TextField("Atlas Output", config.atlasOutputPath); config.rawUIPath = EditorGUILayout.TextField("Raw UI Path", config.rawUIPath); config.uiAtlasPath = EditorGUILayout.TextField("UI Atlas Path", config.uiAtlasPath); EditorGUILayout.Space(); EditorGUILayout.LabelField("Texture Settings", EditorStyles.boldLabel); config.androidFormat = (TextureImporterFormat)EditorGUILayout.EnumPopup("Android Format", config.androidFormat); config.iosFormat = (TextureImporterFormat)EditorGUILayout.EnumPopup("iOS Format", config.iosFormat); config.webglFormat = (TextureImporterFormat)EditorGUILayout.EnumPopup("WebGL Format", config.webglFormat); config.compressionQuality = EditorGUILayout.IntSlider("Compression Quality", config.compressionQuality, 0, 100); EditorGUILayout.Space(); EditorGUILayout.LabelField("Packing Settings", EditorStyles.boldLabel); config.padding = EditorGUILayout.IntField("Padding", config.padding); config.enableRotation = EditorGUILayout.Toggle("Enable Rotation", config.enableRotation); config.blockOffset = EditorGUILayout.IntField("Block Offset", config.blockOffset); if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(config); } EditorGUILayout.Space(); if (GUILayout.Button("Force Rebuild All Atlases", GUILayout.Height(30))) { AtlasProcessor.ForceRebuildAtlases(config); } } }