sprites reimport 오류 수정

This commit is contained in:
NTG 2025-08-19 16:33:00 +09:00
parent 727b7e2f91
commit 33eb9439f5

View File

@ -203,6 +203,13 @@ public static void CreateAtlas(string path, string destPath)
if (objects.Count == 0) return; if (objects.Count == 0) return;
// Validate destination path extension
if (!destPath.EndsWith(ExtenstionConstants.SpriteAtlasExtenstionLower, System.StringComparison.OrdinalIgnoreCase))
{
Debug.LogWarning($"[SpriteAtlas] destPath must end with .spriteatlas : {destPath}");
return;
}
Utils.MakeFolderFromFilePath(destPath); Utils.MakeFolderFromFilePath(destPath);
var atlas = new SpriteAtlasAsset(); var atlas = new SpriteAtlasAsset();
@ -216,9 +223,17 @@ public static void CreateAtlas(string path, string destPath)
atlas.Add(objects.ToArray()); atlas.Add(objects.ToArray());
SpriteAtlasAsset.Save(atlas, destPath); SpriteAtlasAsset.Save(atlas, destPath);
AssetDatabase.Refresh();
var sai = (SpriteAtlasImporter)AssetImporter.GetAtPath(destPath); // Ensure importer is created/applied synchronously before accessing it
AssetDatabase.ImportAsset(destPath, ImportAssetOptions.ForceUpdate | ImportAssetOptions.ForceSynchronousImport);
var sai = AssetImporter.GetAtPath(destPath) as SpriteAtlasImporter;
if (sai == null)
{
Debug.LogWarning($"[SpriteAtlas] Importer not ready for '{destPath}'. Skipping settings this pass.");
return;
}
sai.packingSettings = new SpriteAtlasPackingSettings sai.packingSettings = new SpriteAtlasPackingSettings
{ {
enableRotation = false, enableRotation = false,
@ -235,8 +250,11 @@ public static void CreateAtlas(string path, string destPath)
generateMipMaps = false generateMipMaps = false
}; };
// 저장 후 설정 반영을 위해 동기 임포트, 그리고 즉시 패킹 수행 // Persist settings and reimport synchronously to apply them
AssetDatabase.WriteImportSettingsIfDirty(destPath);
AssetDatabase.ImportAsset(destPath, ImportAssetOptions.ForceUpdate | ImportAssetOptions.ForceSynchronousImport); AssetDatabase.ImportAsset(destPath, ImportAssetOptions.ForceUpdate | ImportAssetOptions.ForceSynchronousImport);
// Finally, pack the atlas for the active build target
var packedAtlas = AssetDatabase.LoadAssetAtPath<SpriteAtlas>(destPath); var packedAtlas = AssetDatabase.LoadAssetAtPath<SpriteAtlas>(destPath);
if (packedAtlas != null) if (packedAtlas != null)
{ {
@ -253,10 +271,22 @@ public static void CreateSingleAtlas(string path, string destPath)
AssetDatabase.DeleteAsset(destPath); AssetDatabase.DeleteAsset(destPath);
} }
// Validate destination path extension
if (!destPath.EndsWith(ExtenstionConstants.SpriteAtlasExtenstionLower, System.StringComparison.OrdinalIgnoreCase))
{
Debug.LogWarning($"[SpriteAtlas] destPath must end with .spriteatlas : {destPath}");
return;
}
Utils.MakeFolderFromFilePath(destPath); Utils.MakeFolderFromFilePath(destPath);
var atlas = new SpriteAtlasAsset(); var atlas = new SpriteAtlasAsset();
var sprite = AssetDatabase.LoadAssetAtPath<Sprite>(path); var sprite = AssetDatabase.LoadAssetAtPath<Sprite>(path);
if (sprite == null)
{
Debug.LogWarning($"[SpriteAtlas] Source sprite not found at '{path}'. Skipping atlas: '{destPath}'");
return;
}
atlas.Add(new Object[] { sprite }); atlas.Add(new Object[] { sprite });
var spriteAtlasComponents = new List<IPostProcessorSpriteAtlas>(); var spriteAtlasComponents = new List<IPostProcessorSpriteAtlas>();
@ -267,9 +297,17 @@ public static void CreateSingleAtlas(string path, string destPath)
} }
SpriteAtlasAsset.Save(atlas, destPath); SpriteAtlasAsset.Save(atlas, destPath);
AssetDatabase.Refresh();
var sai = (SpriteAtlasImporter)AssetImporter.GetAtPath(destPath); // Ensure importer is created/applied synchronously before accessing it
AssetDatabase.ImportAsset(destPath, ImportAssetOptions.ForceUpdate | ImportAssetOptions.ForceSynchronousImport);
var sai = AssetImporter.GetAtPath(destPath) as SpriteAtlasImporter;
if (sai == null)
{
Debug.LogWarning($"[SpriteAtlas] Importer not ready for '{destPath}'. Skipping settings this pass.");
return;
}
sai.packingSettings = new SpriteAtlasPackingSettings sai.packingSettings = new SpriteAtlasPackingSettings
{ {
enableRotation = false, enableRotation = false,
@ -286,8 +324,11 @@ public static void CreateSingleAtlas(string path, string destPath)
generateMipMaps = false generateMipMaps = false
}; };
// 저장 후 설정 반영을 위해 동기 임포트, 그리고 즉시 패킹 수행 // Persist settings and reimport synchronously to apply them
AssetDatabase.WriteImportSettingsIfDirty(destPath);
AssetDatabase.ImportAsset(destPath, ImportAssetOptions.ForceUpdate | ImportAssetOptions.ForceSynchronousImport); AssetDatabase.ImportAsset(destPath, ImportAssetOptions.ForceUpdate | ImportAssetOptions.ForceSynchronousImport);
// Finally, pack the atlas for the active build target
var packedAtlas = AssetDatabase.LoadAssetAtPath<SpriteAtlas>(destPath); var packedAtlas = AssetDatabase.LoadAssetAtPath<SpriteAtlas>(destPath);
if (packedAtlas != null) if (packedAtlas != null)
{ {