public void GenerateIndividualSprites(AseSheetData sheetData, bool addToContext = false) { if (SpriteImportOptions == null) { SpriteImportOptions = SpriteImportOptions.Default; } if (MainTexture == null) { GenerateMainTextureFromSheetFile(Path.Combine( Path.GetDirectoryName(sheetData.pathToSheetData) ?? throw new InvalidOperationException("Error while processing data path"), sheetData.meta.image)); } if (IndividualSprites != null) { foreach (var individualSprite in IndividualSprites) { Object.DestroyImmediate(individualSprite); } IndividualSprites.Clear(); } else { IndividualSprites = new List <Sprite>(); } var addedObjects = new Dictionary <string, int>(); if (!Config.IsLiteVersion && sheetData.meta.slices?.Length > 0 && (sheetData.meta.frameTags?.Length > 0)) { Debug.LogWarning( "It seems that you have enabled the 'Split slices' option and have animations. This is not well supported and is usually only for static images. No slices will be exported now"); } foreach (var sprite in EnumerateSprites(sheetData)) { //Make sure we prevent import of two assets with the same name if (addedObjects.ContainsKey(sprite.name)) { var newCount = addedObjects[sprite.name] + 1; addedObjects[sprite.name] = newCount; sprite.name = sprite.name + "_" + newCount; } else { addedObjects.Add(sprite.name, 1); } if (addToContext) { AseFileContext.AddObjectToAsset(sprite.name, sprite); } IndividualSprites.Add(sprite); } }
public static IEnumerable <Sprite> EnumerateSprites(Texture2D texture, AseSheetData sheetData, SpriteImportOptions SpriteImportOptions) { var shouldExportSlices = sheetData.meta.slices?.Length > 0 && (sheetData.meta.frameTags == null || sheetData.meta.frameTags.Length == 0); if (shouldExportSlices) { foreach (var slice in sheetData.meta.slices) { foreach (var sliceKeyData in slice.keys) { var frame = sheetData.frames[sliceKeyData.frame]; var rect = new Rect(frame.frame.x + sliceKeyData.bounds.x, frame.frame.h - sliceKeyData.bounds.y - sliceKeyData.bounds.h, sliceKeyData.bounds.w, sliceKeyData.bounds.h); var sprite = Sprite.Create(texture, rect, SpriteImportOptions.pivot, SpriteImportOptions.pixelsPerUnit, SpriteImportOptions.extrude, SpriteImportOptions.meshType, SpriteImportOptions.border); sprite.name = frame.filename + "_" + slice.name; yield return(sprite); } } } else { foreach (var sheetDataFrame in sheetData.frames) { var sprite = Sprite.Create(texture, sheetDataFrame.frame.ToRect(), SpriteImportOptions.pivot, SpriteImportOptions.pixelsPerUnit, SpriteImportOptions.extrude, SpriteImportOptions.meshType, SpriteImportOptions.border); sprite.name = sheetDataFrame.filename; yield return(sprite); } } }