AlicizaX/Client/Assets/Editor/Postprocessor/Atlas/AtlasEditorWindow.cs
2025-02-06 17:59:35 +08:00

76 lines
2.5 KiB
C#

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