96 lines
3.2 KiB
C#
96 lines
3.2 KiB
C#
// AtlasEditorWindow.cs
|
|
|
|
using AlicizaX.Editor;
|
|
using AlicizaX.Editor.Extension;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
public class AtlasEditorWindow : EditorWindow
|
|
{
|
|
private const string AtlasProcessorKey = "AtlasProcessorKey";
|
|
|
|
private AtlasConfiguration config;
|
|
private Vector2 scrollPos;
|
|
private bool useAtlas = false;
|
|
|
|
[EditorToolFunction("图集工具")]
|
|
public static void ShowWindow()
|
|
{
|
|
GetWindow<AtlasEditorWindow>("图集打包");
|
|
}
|
|
|
|
private void OnEnable()
|
|
{
|
|
LoadOrCreateConfig();
|
|
useAtlas = ScriptingDefineSymbols.HasScriptingDefineSymbol(BuildTargetGroup.Standalone, AtlasProcessorKey);
|
|
}
|
|
|
|
private void LoadOrCreateConfig()
|
|
{
|
|
config = AtlasConfiguration.instance;
|
|
}
|
|
|
|
private void OnGUI()
|
|
{
|
|
if (config == null) return;
|
|
|
|
|
|
scrollPos = EditorGUILayout.BeginScrollView(scrollPos);
|
|
|
|
|
|
EditorGUILayout.Space();
|
|
EditorGUILayout.LabelField("Atlas Configuration", EditorStyles.boldLabel);
|
|
var useAtlasToggle = EditorGUILayout.Toggle("Enable", useAtlas);
|
|
if (useAtlasToggle != useAtlas)
|
|
{
|
|
if (useAtlas)
|
|
{
|
|
ScriptingDefineSymbols.AddScriptingDefineSymbol(AtlasProcessorKey);
|
|
}
|
|
else
|
|
{
|
|
ScriptingDefineSymbols.RemoveScriptingDefineSymbol(AtlasProcessorKey);
|
|
}
|
|
}
|
|
|
|
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);
|
|
}
|
|
}
|
|
}
|