101 lines
3.8 KiB
C#
101 lines
3.8 KiB
C#
using System.Collections.Generic;
|
|
using System.IO;
|
|
using UnityEditor;
|
|
using UnityEditor.U2D;
|
|
using UnityEngine;
|
|
using UnityEngine.U2D;
|
|
|
|
public static class AtlasUtils
|
|
{
|
|
public static SpriteAtlas CreateAtlas(string name, List<Sprite> sprites, string path, int packPadding = 2,
|
|
FilterMode filterMode = FilterMode.Bilinear,
|
|
int maxTextureSize = 2048,
|
|
TextureImporterFormat androidFormat = TextureImporterFormat.ASTC_6x6,
|
|
TextureImporterFormat iosFormat = TextureImporterFormat.ASTC_6x6)
|
|
{
|
|
SpriteAtlas spriteAtlas = new SpriteAtlas();
|
|
spriteAtlas.Add(sprites.ToArray());
|
|
spriteAtlas.SetProjectCommonSetting(name, packPadding, filterMode, maxTextureSize, androidFormat, iosFormat);
|
|
string assetPath = $"{path}/{spriteAtlas.name}.spriteatlas";
|
|
if (File.Exists(assetPath))
|
|
{
|
|
File.Delete(assetPath);
|
|
AssetDatabase.Refresh();
|
|
}
|
|
AssetDatabase.CreateAsset(spriteAtlas,$"{path}/{spriteAtlas.name}.spriteatlas");
|
|
return spriteAtlas;
|
|
}
|
|
}
|
|
|
|
public static partial class Extensions
|
|
{
|
|
public static SpriteAtlas SetProjectCommonSetting(this SpriteAtlas spriteAtlas, string name, int packPadding = 2,
|
|
FilterMode filterMode = FilterMode.Bilinear,
|
|
int maxTextureSize = 2048,
|
|
TextureImporterFormat androidFormat = TextureImporterFormat.ASTC_6x6,
|
|
TextureImporterFormat iosFormat = TextureImporterFormat.ASTC_6x6)
|
|
{
|
|
spriteAtlas.name = name;
|
|
spriteAtlas.SetCommonPackingSetting(packPadding)
|
|
.SetCommonTextureSetting(filterMode)
|
|
.SetCommonAndroidTextureSettings(maxTextureSize, androidFormat)
|
|
.SetCommonIOSTextureSettings(maxTextureSize, iosFormat);
|
|
return spriteAtlas;
|
|
}
|
|
|
|
public static SpriteAtlas SetCommonPackingSetting(this SpriteAtlas spriteAtlas, int padding = 2)
|
|
{
|
|
SpriteAtlasPackingSettings packingSettings = new SpriteAtlasPackingSettings
|
|
{
|
|
enableTightPacking = false,
|
|
enableRotation = false,
|
|
blockOffset = 1,
|
|
padding = padding
|
|
};
|
|
spriteAtlas.SetPackingSettings(packingSettings);
|
|
return spriteAtlas;
|
|
}
|
|
|
|
public static SpriteAtlas SetCommonTextureSetting(this SpriteAtlas spriteAtlas, FilterMode filterMode = FilterMode.Bilinear)
|
|
{
|
|
SpriteAtlasTextureSettings textureSettings = new SpriteAtlasTextureSettings
|
|
{
|
|
readable = false,
|
|
anisoLevel = 1,
|
|
filterMode = filterMode,
|
|
generateMipMaps = false,
|
|
sRGB = true
|
|
};
|
|
spriteAtlas.SetTextureSettings(textureSettings);
|
|
return spriteAtlas;
|
|
}
|
|
|
|
public static SpriteAtlas SetCommonAndroidTextureSettings(this SpriteAtlas spriteAtlas, int maxTextureSize = 2048, TextureImporterFormat format = TextureImporterFormat.ASTC_6x6)
|
|
{
|
|
TextureImporterPlatformSettings settings = new TextureImporterPlatformSettings
|
|
{
|
|
name = "Android",
|
|
maxTextureSize = maxTextureSize,
|
|
format = format,
|
|
overridden = true,
|
|
textureCompression = TextureImporterCompression.Compressed
|
|
};
|
|
spriteAtlas.SetPlatformSettings(settings);
|
|
return spriteAtlas;
|
|
}
|
|
|
|
public static SpriteAtlas SetCommonIOSTextureSettings(this SpriteAtlas spriteAtlas, int maxTextureSize = 2048, TextureImporterFormat format = TextureImporterFormat.ASTC_4x4)
|
|
{
|
|
TextureImporterPlatformSettings settings = new TextureImporterPlatformSettings
|
|
{
|
|
name = "iPhone",
|
|
maxTextureSize = maxTextureSize,
|
|
format = format,
|
|
overridden = true,
|
|
textureCompression = TextureImporterCompression.Compressed
|
|
};
|
|
spriteAtlas.SetPlatformSettings(settings);
|
|
return spriteAtlas;
|
|
}
|
|
}
|