← Files UnityARCHIVED FILE
skills/manage-sprite-atlas/references/api.md
9.61 KB · Oct 3, 2026 · 06:34 UTC
# SpriteAtlas V2 API Reference
Complete API documentation for Unity's SpriteAtlas V2 system.
## Table of Contents
- [SpriteAtlasAsset (Editor Authoring)](#spriteatlasasset-editor-authoring)
- [SpriteAtlasImporter (Editor Settings)](#spriteatlasimporter-editor-settings)
- [SpriteAtlasUtility (Editor Packing)](#spriteatlasutility-editor-packing)
- [SpriteAtlas (Runtime)](#spriteatlas-runtime)
- [SpriteAtlasManager (Runtime Loading)](#spriteatlasmanager-runtime-loading)
- [Settings Structures](#settings-structures)
## SpriteAtlasAsset (Editor Authoring)
**Namespace:** `UnityEditor.U2D`
**Location:** `SpriteAtlasAsset.bindings.cs`
Primary API for adding/removing content from sprite atlases.
### Constructor
```csharp
SpriteAtlasAsset atlasAsset = new SpriteAtlasAsset();
```
### Content Management
```csharp
// Add sprites or folders
void Add(Object[] objects)
// Remove packables
void Remove(Object[] objects)
// Remove by index
void RemoveAt(int index)
```
### Persistence
```csharp
// Save to disk
static void Save(SpriteAtlasAsset asset, string path)
// Load from disk
static SpriteAtlasAsset Load(string path)
```
### Variant Configuration
```csharp
// Mark as variant atlas
void SetIsVariant(bool value)
// Check if variant
bool isVariant { get; }
// Set master atlas (requires SpriteAtlas reference)
void SetMasterAtlas(SpriteAtlas master)
// Get master atlas
SpriteAtlas GetMasterAtlas()
```
### Custom Packer
```csharp
// Set custom packing algorithm
void SetScriptablePacker(Object packer)
// Get current packer
Object GetPacker()
```
### Deprecated Methods
These methods are deprecated in V2. Use `SpriteAtlasImporter` instead:
- `SetVariantScale()` → Use `SpriteAtlasImporter.variantScale`
- `SetIncludeInBuild()` → Use `SpriteAtlasImporter.includeInBuild`
- `IsIncludeInBuild()` → Use `SpriteAtlasImporter.includeInBuild`
- `SetPlatformSettings()` → Use `SpriteAtlasImporter.SetPlatformSettings()`
- `SetTextureSettings()` → Use `SpriteAtlasImporter.textureSettings`
- `SetPackingSettings()` → Use `SpriteAtlasImporter.packingSettings`
## SpriteAtlasImporter (Editor Settings)
**Namespace:** `UnityEditor.U2D`
**Location:** `SpriteAtlasImporter.bindings.cs`
Primary API for configuring all sprite atlas settings.
### Getting the Importer
```csharp
string path = "Assets/MyAtlas.spriteatlas";
SpriteAtlasImporter importer = AssetImporter.GetAtPath(path) as SpriteAtlasImporter;
```
### Basic Properties
```csharp
// Variant scale multiplier
float variantScale { get; set; }
// Include atlas in player build
bool includeInBuild { get; set; }
```
### Texture Settings
```csharp
// Get/set texture settings (struct)
SpriteAtlasTextureSettings textureSettings { get; set; }
// Example:
SpriteAtlasTextureSettings settings = importer.textureSettings;
settings.filterMode = FilterMode.Bilinear;
settings.generateMipMaps = false;
settings.readable = false;
settings.sRGB = true;
importer.textureSettings = settings;
```
### Packing Settings
```csharp
// Get/set packing settings (struct)
SpriteAtlasPackingSettings packingSettings { get; set; }
// Example:
SpriteAtlasPackingSettings settings = importer.packingSettings;
settings.padding = 4;
settings.enableRotation = false;
settings.enableTightPacking = false;
settings.enableAlphaDilation = true;
importer.packingSettings = settings;
```
### Platform Settings
```csharp
// Get platform-specific settings
TextureImporterPlatformSettings GetPlatformSettings(string platform)
// Set platform-specific settings
void SetPlatformSettings(TextureImporterPlatformSettings settings)
// Example:
TextureImporterPlatformSettings platformSettings = importer.GetPlatformSettings("Android");
platformSettings.overridden = true;
platformSettings.maxTextureSize = 2048;
platformSettings.format = TextureImporterFormat.ASTC_6x6;
platformSettings.compressionQuality = 50;
importer.SetPlatformSettings(platformSettings);
```
Platform names: "Standalone", "Android", "iOS", "WebGL", etc.
### Applying Changes
```csharp
// REQUIRED: Save and reimport after any changes
void SaveAndReimport()
```
**Critical:** Always call `SaveAndReimport()` after modifying importer properties.
## SpriteAtlasUtility (Editor Packing)
**Namespace:** `UnityEditor.U2D`
**Location:** `EditorSpritePacking.bindings.cs`
Utilities for packing sprite atlases.
### Packing Operations
```csharp
// Pack all atlases in project for target platform
static void PackAllAtlases(BuildTarget target, bool canCancel)
// Pack specific atlases
static void PackAtlases(SpriteAtlas[] atlases, BuildTarget target, bool canCancel)
// Clean up packing temporary data
static void CleanupAtlasPacking()
```
### Usage
```csharp
using UnityEditor;
using UnityEditor.U2D;
BuildTarget target = EditorUserBuildSettings.activeBuildTarget;
// Pack all
SpriteAtlasUtility.PackAllAtlases(target, canCancel: true);
SpriteAtlasUtility.CleanupAtlasPacking();
// Pack specific
SpriteAtlas[] atlases = new[] { atlas1, atlas2 };
SpriteAtlasUtility.PackAtlases(atlases, target, canCancel: false);
SpriteAtlasUtility.CleanupAtlasPacking();
```
**Important:** Always call `CleanupAtlasPacking()` after batch packing operations.
## SpriteAtlas (Runtime)
**Namespace:** `UnityEngine.U2D`
**Location:** `Runtime/2D/SpriteAtlas/ScriptBindings/SpriteAtlas.bindings.cs`
**RUNTIME ONLY** - Do not script against SpriteAtlas in editor code. Provides read-only access to packed sprites.
### Properties
```csharp
// Total sprite count in atlas
int spriteCount { get; }
// Atlas tag identifier
string tag { get; }
// Check if atlas is variant
bool isVariant { get; }
```
### Sprite Queries
```csharp
// Get sprite by name
Sprite GetSprite(string name)
// Get all sprites
int GetSprites(Sprite[] sprites)
// Get sprites matching name prefix
int GetSprites(Sprite[] sprites, string namePrefix)
// Check if sprite belongs to atlas
bool CanBindTo(Sprite sprite)
```
### Usage
```csharp
using UnityEngine;
using UnityEngine.U2D;
SpriteAtlas atlas = Resources.Load<SpriteAtlas>("MyAtlas");
// Get specific sprite
Sprite sprite = atlas.GetSprite("SpriteName");
// Get all sprites
Sprite[] allSprites = new Sprite[atlas.spriteCount];
int count = atlas.GetSprites(allSprites);
// Get sprites with prefix
Sprite[] enemySprites = new Sprite[atlas.spriteCount];
int enemyCount = atlas.GetSprites(enemySprites, "Enemy_");
// Validate sprite binding
bool canBind = atlas.CanBindTo(sprite);
```
## SpriteAtlasManager (Runtime Loading)
**Namespace:** `UnityEngine.U2D`
**Location:** `Runtime/2D/SpriteAtlas/ScriptBindings/SpriteAtlas.bindings.cs`
Manages atlas loading callbacks and runtime creation.
### Events
```csharp
// Called when an atlas is requested (late binding)
static event Action<string, Action<SpriteAtlas>> atlasRequested
// Called when an atlas is registered
static event Action<SpriteAtlas> atlasRegistered
```
### Late Binding Pattern
```csharp
using UnityEngine;
using UnityEngine.U2D;
public class AtlasLoader : MonoBehaviour
{
void OnEnable()
{
SpriteAtlasManager.atlasRequested += OnAtlasRequested;
SpriteAtlasManager.atlasRegistered += OnAtlasRegistered;
}
void OnDisable()
{
SpriteAtlasManager.atlasRequested -= OnAtlasRequested;
SpriteAtlasManager.atlasRegistered -= OnAtlasRegistered;
}
void OnAtlasRequested(string tag, System.Action<SpriteAtlas> callback)
{
// Load atlas from Resources or AssetBundle
SpriteAtlas atlas = Resources.Load<SpriteAtlas>($"Atlases/{tag}");
callback(atlas);
}
void OnAtlasRegistered(SpriteAtlas atlas)
{
Debug.Log($"Atlas registered: {atlas.tag}");
}
}
```
### Runtime Atlas Creation
```csharp
// Create atlas at runtime
static SpriteAtlas CreateSpriteAtlas(string name,
SpriteAtlasRuntimeConfig config,
AtlasPage[] pages)
```
Advanced usage for dynamic atlas generation. See custom-packing.md for details.
## Settings Structures
### SpriteAtlasTextureSettings
```csharp
struct SpriteAtlasTextureSettings
{
int maxTextureSize { get; } // Read-only
int anisoLevel { get; set; } // Anisotropic filtering level
FilterMode filterMode { get; set; } // Point, Bilinear, Trilinear
bool generateMipMaps { get; set; } // Enable mipmap generation
bool readable { get; set; } // CPU-readable texture
bool sRGB { get; set; } // Use sRGB color space
}
```
### SpriteAtlasPackingSettings
```csharp
struct SpriteAtlasPackingSettings
{
int blockOffset { get; set; } // Block offset for algorithm
int padding { get; set; } // Padding between sprites (pixels)
bool enableRotation { get; set; } // Allow sprite rotation
bool enableTightPacking { get; set; } // Pack around sprite meshes
bool enableAlphaDilation { get; set; } // Prevent bleeding artifacts
}
```
### TextureImporterPlatformSettings
Used for platform-specific configuration. See Unity's `TextureImporter` documentation for complete reference.
Common fields:
```csharp
class TextureImporterPlatformSettings
{
string name { get; set; } // Platform name
bool overridden { get; set; } // Override default settings
int maxTextureSize { get; set; } // Max size (32-8192)
TextureImporterFormat format { get; set; } // Compression format
int compressionQuality { get; set; } // Quality (0-100)
}
```
Common platform names: "Standalone", "Android", "iOS", "WebGL"
Common formats:
- Android: `TextureImporterFormat.ASTC_6x6`, `TextureImporterFormat.ETC2_RGBA8`
- iOS: `TextureImporterFormat.ASTC_6x6`, `TextureImporterFormat.PVRTC_RGBA4`
- Desktop: `TextureImporterFormat.DXT5`, `TextureImporterFormat.BC7`
- WebGL: `TextureImporterFormat.DXT5`
SHA-256: b06f6f5db194ddbbae00b4b1dda673ca73c7289d990176861e2901a75f6b0056