ロバメモ - 素人のUnity覚書と奮闘記

素人のUnity覚書と奮闘記

画像フォーマットを一括で設定したい【最新】

この記事を現バージョンに更新
robamemo.hatenablog.com
上の方法だと、古いメソッド使わんといて!って怒られるから、対処してみた。

コード

Editorフォルダに以下のスクリプトを作成するだけ。

using UnityEngine;
using UnityEditor;

public class CustomAssetPostprocessor : AssetPostprocessor
{
    void OnPreprocessTexture ()
    {
        TextureImporter importer = assetImporter as TextureImporter;

        //MipMapのチェックを外す
        importer.mipmapEnabled = false;

        TextureImporterPlatformSettings iPhone_png = new TextureImporterPlatformSettings ();
        iPhone_png.overridden = true;
        iPhone_png.name = "iPhone";
        iPhone_png.maxTextureSize = 2048;
        iPhone_png.format = TextureImporterFormat.ASTC_RGBA_4x4;
        iPhone_png.compressionQuality = 50;
        iPhone_png.allowsAlphaSplitting = false;

        TextureImporterPlatformSettings iPhone_jpeg = new TextureImporterPlatformSettings ();
        iPhone_jpeg.overridden = true;
        iPhone_jpeg.name = "iPhone";
        iPhone_jpeg.maxTextureSize = 2048;
        iPhone_jpeg.format = TextureImporterFormat.ASTC_RGB_4x4;
        iPhone_jpeg.compressionQuality = 50;
        iPhone_jpeg.allowsAlphaSplitting = false;

        TextureImporterPlatformSettings Android_png = new TextureImporterPlatformSettings ();
        Android_png.overridden = true;
        Android_png.name = "Android";
        Android_png.maxTextureSize = 2048;
        Android_png.format = TextureImporterFormat.DXT5;
        Android_png.compressionQuality = 50;
        Android_png.allowsAlphaSplitting = false;

        TextureImporterPlatformSettings Android_jpeg = new TextureImporterPlatformSettings ();
        Android_jpeg.overridden = true;
        Android_jpeg.name = "Android";
        Android_jpeg.maxTextureSize = 2048;
        Android_jpeg.format = TextureImporterFormat.DXT1;
        Android_jpeg.compressionQuality = 50;
        Android_jpeg.allowsAlphaSplitting = false;


        if (importer.DoesSourceTextureHaveAlpha ()) {
            //Alphaチャンネルあある場合
            importer.SetPlatformTextureSettings (iPhone_png);
            importer.SetPlatformTextureSettings (Android_png);
        } else {
            //Alphaチャンネルがない場合
            importer.SetPlatformTextureSettings (iPhone_jpeg);
            importer.SetPlatformTextureSettings (Android_jpeg);
        }

    }

}

ランチャーアイコンだけ圧縮しない方法

( 2018/10/30 追記)
ビルドする時に”ランチャーアイコン圧縮してんで〜”って警告がでたので、対処法を追記メモ。
上記のスクリプトに追加。

Compressed texture lancherIcon is used as icon. This might compromise visual quality of the final image. Uncompressed format might be considered as better import option.

//アイコン用のフォーマットを用意
        var icon_Android_png = new TextureImporterPlatformSettings();
        icon_Android_png.overridden = true;
        icon_Android_png.name = "Android";
        icon_Android_png.maxTextureSize = 512;
        icon_Android_png.format = TextureImporterFormat.RGBA32;
        icon_Android_png.compressionQuality = 100;
        icon_Android_png.allowsAlphaSplitting = false;

//ファイルパス名で判定してフォーマットを適応させる
        if (importer.assetPath.IndexOf("lancherIcon") >= 0)
        {
            importer.SetPlatformTextureSettings(icon_Android_png);
        }

参考にしたサイト様

【Unity】アイコン画像のフォーマット警告:Compressed texture XXX is used as icon. This might compromise visual quality of~ を消す - ヽ|∵|ゝ(Fantom) の 開発blog?

以上。