コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Sprite Atlas V2 だと SetPackingSettings や SetTextureSettings が反映されない

概要

[MenuItem( "hoge/hoge" )]
private static void Hoge()
{
    var assetPath   = "Assets/New Sprite Atlas.spriteatlas";
    var spriteAtlas = AssetDatabase.LoadAssetAtPath<SpriteAtlas>( assetPath );

    var packingSettings = spriteAtlas.GetPackingSettings();
    packingSettings.enableRotation = !packingSettings.enableRotation;
    spriteAtlas.SetPackingSettings( packingSettings );

    var textureSettings = spriteAtlas.GetTextureSettings();
    textureSettings.readable = !textureSettings.readable;
    spriteAtlas.SetTextureSettings( textureSettings );
}

Sprite Atlas V1 であれば上記のようなコードでパラメータを変更できる

[MenuItem( "hoge/hoge" )]
private static void Hoge()
{
    var assetPath   = "Assets/New Sprite Atlas.spriteatlasv2"; // ★ 拡張子を変更
    var spriteAtlas = AssetDatabase.LoadAssetAtPath<SpriteAtlas>( assetPath );

    var packingSettings = spriteAtlas.GetPackingSettings();
    packingSettings.enableRotation = !packingSettings.enableRotation;
    spriteAtlas.SetPackingSettings( packingSettings );

    var textureSettings = spriteAtlas.GetTextureSettings();
    textureSettings.readable = !textureSettings.readable;
    spriteAtlas.SetTextureSettings( textureSettings );

    EditorUtility.SetDirty( spriteAtlas ); // ★ SetDirty も試してみる
}

Sprite Atlas V2 だと上記のようなコードを実行してもパラメータが変更されなかった
SetDirty をしても反映されなかった

検証環境

  • macOS Monterey バージョン 12.5.1
  • Unity 2022.1.11f1