public void WhenSpriteWithAtlas_SpriteImportDataCreated(SpritePackerMode spriteMode, string spritePackingTag, bool hasReferencingSpriteAtlas, bool expectedPacked)
        {
            string sourceTexture = Path.Combine(kSourceTestAssetFolder, "SpriteTexture32x32.png");
            string destTexture   = Path.Combine(kTestAssetFolder, "SpriteTexture32x32.png");

            AssetDatabase.CopyAsset(sourceTexture, destTexture);
            TextureImporter importer = AssetImporter.GetAtPath(destTexture) as TextureImporter;

            importer.spritePackingTag = spritePackingTag;
            importer.SaveAndReimport();

            if (hasReferencingSpriteAtlas)
            {
                var sa            = new SpriteAtlas();
                var targetObjects = new UnityEngine.Object[] { AssetDatabase.LoadAssetAtPath <Texture>(destTexture) };
                sa.Add(targetObjects);
                string saPath = Path.Combine(kTestAssetFolder, "sa.spriteAtlas");
                AssetDatabase.CreateAsset(sa, saPath);
                AssetDatabase.Refresh();
            }

            GUID.TryParse(AssetDatabase.AssetPathToGUID(destTexture), out GUID spriteGUID);

            CalculateAssetDependencyData.TaskInput input = CreateDefaultInput();
            EditorSettings.spritePackerMode = spriteMode;
            SpriteAtlasUtility.PackAllAtlases(input.Target);
            input.Assets = new List <GUID>()
            {
                spriteGUID
            };
            CalculateAssetDependencyData.RunInternal(input, out CalculateAssetDependencyData.TaskOutput output);

            Assert.AreEqual(expectedPacked, output.AssetResults[0].spriteData.PackedSprite);
        }
    private void DoAlphaSeparate(BuildTarget buildTarget)
    {
        m_originSpritePackerMode = EditorSettings.spritePackerMode;

        m_spriteEntries = new List <SpriteEntry>();
        m_atlasEntries  = new List <AtlasEntry>();

        // 刷新图集缓存
        UpdateAtlases(buildTarget);

        // 找到所有要处理的项
        FindAllEntries(buildTarget, m_spriteEntries, m_atlasEntries);

        // 生成alpha纹理
        GenerateAlphaTextures(m_atlasEntries);

        // 保存纹理到文件
        SaveTextureAssets(m_atlasEntries);

        // 刷新资源
        AssetDatabase.Refresh();

        // 从文件中加载alpha纹理
        ReloadTextures(m_atlasEntries);

        // 修改所有sprite的Render Data
        WriteSpritesRenderData(m_atlasEntries);

        // 禁用SpritePacker准备打包
        EditorSettings.spritePackerMode = SpritePackerMode.Disabled;
    }
 public void Setup()
 {
     m_PrevMode = EditorSettings.spritePackerMode;
     Directory.CreateDirectory(kTestAssetFolder);
 }
 public SpritePackerScope(SpritePackerMode mode)
 {
     m_PrevMode = EditorSettings.spritePackerMode;
     EditorSettings.spritePackerMode = mode;
 }