TextureImportSettings

From Unify Community Wiki

Jump to: navigation, search

Author: Martin Schultz (MartinSchultz)

Contents

[edit] Description

Adds under the menu Custom→Texture a way to change for multiple selected textures the import settings in one step. Idea was to have the same choices for multiple texture files as you would have if you open the import settings of a single texture. Currently the most often used import settings are editable: Texture Format (same amount and order as in Unity), enable/disable MipMap and changing the maximum texture size.

[edit] Usage

You must place the script in a folder named Editor in your project's Assets folder for it to work properly.

Select some textures in the project window and select from the Custom→Texture menu the modification you want to apply to the selected textures.

[edit] Screenshot

Image:Textureimportsettings.jpg


[edit] C# - ChangeTextureImportSettings.cs


using UnityEngine;
using UnityEditor;

// /////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Batch Texture import settings modifier.
//
// Modifies all selected textures in the project window and applies the requested modification on the
// textures. Idea was to have the same choices for multiple files as you would have if you open the
// import settings of a single texture. Put this into Assets/Editor and once compiled by Unity you find
// the new functionality in Custom -> Texture. Enjoy! :-)
//
// Based on the great work of benblo in this thread:
// http://forum.unity3d.com/viewtopic.php?t=16079&start=0&postdays=0&postorder=asc&highlight=textureimporter
//
// Developed by Martin Schultz, Decane in August 2009
// e-mail: ms@decane.net
//
// /////////////////////////////////////////////////////////////////////////////////////////////////////////
public class ChangeTextureImportSettings : ScriptableObject {
   
    [MenuItem ("Custom/Texture/Change Texture Format/Auto")]
    static void ChangeTextureFormat_Auto() {
        SelectedChangeTextureFormatSettings(TextureImporterFormat.Automatic);
    }
       
    [MenuItem ("Custom/Texture/Change Texture Format/RGB Compressed DXT1")]
    static void ChangeTextureFormat_RGB_DXT1() {
        SelectedChangeTextureFormatSettings(TextureImporterFormat.DXT1);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Format/RGB Compressed DXT5")]
    static void ChangeTextureFormat_RGB_DXT5() {
        SelectedChangeTextureFormatSettings(TextureImporterFormat.DXT5);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Format/RGB 16 bit")]
    static void ChangeTextureFormat_RGB_16bit() {
        SelectedChangeTextureFormatSettings(TextureImporterFormat.RGB16);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Format/RGB 24 bit")]
    static void ChangeTextureFormat_RGB_24bit() {
        SelectedChangeTextureFormatSettings(TextureImporterFormat.RGB24);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Format/Alpha 8 bit")]
    static void ChangeTextureFormat_Alpha_8bit() {
        SelectedChangeTextureFormatSettings(TextureImporterFormat.Alpha8);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Format/RGBA 16 bit")]
    static void ChangeTextureFormat_RGBA_16bit() {
        SelectedChangeTextureFormatSettings(TextureImporterFormat.ARGB16);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Format/RGBA 32 bit")]
    static void ChangeTextureFormat_RGBA_32bit() {
        SelectedChangeTextureFormatSettings(TextureImporterFormat.ARGB32);
    }
   
    // ----------------------------------------------------------------------------
   
    [MenuItem ("Custom/Texture/Change Texture Size/Change Max Texture Size/32")]
    static void ChangeTextureSize_32() {
        SelectedChangeMaxTextureSize(32);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Size/Change Max Texture Size/64")]
    static void ChangeTextureSize_64() {
        SelectedChangeMaxTextureSize(64);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Size/Change Max Texture Size/128")]
    static void ChangeTextureSize_128() {
        SelectedChangeMaxTextureSize(128);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Size/Change Max Texture Size/256")]
    static void ChangeTextureSize_256() {
        SelectedChangeMaxTextureSize(256);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Size/Change Max Texture Size/512")]
    static void ChangeTextureSize_512() {
        SelectedChangeMaxTextureSize(512);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Size/Change Max Texture Size/1024")]
    static void ChangeTextureSize_1024() {
        SelectedChangeMaxTextureSize(1024);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Size/Change Max Texture Size/2048")]
    static void ChangeTextureSize_2048() {
        SelectedChangeMaxTextureSize(2048);
    }
   
    // ----------------------------------------------------------------------------
   
    [MenuItem ("Custom/Texture/Change MipMap/Enable MipMap")]
    static void ChangeMipMap_On() {
        SelectedChangeMimMap(true);
    }
   
    [MenuItem ("Custom/Texture/Change MipMap/Disable MipMap")]
    static void ChangeMipMap_Off() {
        SelectedChangeMimMap(false);
    }
   
    // ----------------------------------------------------------------------------
   
    static void SelectedChangeMimMap(bool enabled) {
   
        Object[] textures = GetSelectedTextures();
        Selection.objects = new Object[0];
        foreach (Texture2D texture in textures)  {
            string path = AssetDatabase.GetAssetPath(texture);
            TextureImporter textureImporter = AssetImporter.GetAtPath(path) as TextureImporter;
            textureImporter.mipmapEnabled = enabled;   
            AssetDatabase.ImportAsset(path);
        }
    }
   
    static void SelectedChangeMaxTextureSize(int size) {
   
        Object[] textures = GetSelectedTextures();
        Selection.objects = new Object[0];
        foreach (Texture2D texture in textures)  {
            string path = AssetDatabase.GetAssetPath(texture);
            TextureImporter textureImporter = AssetImporter.GetAtPath(path) as TextureImporter;
            textureImporter.maxTextureSize = size; 
            AssetDatabase.ImportAsset(path);
        }
    }
   
    static void SelectedChangeTextureFormatSettings(TextureImporterFormat newFormat) {
   
        Object[] textures = GetSelectedTextures();
        Selection.objects = new Object[0];
        foreach (Texture2D texture in textures)  {
            string path = AssetDatabase.GetAssetPath(texture);
            //Debug.Log("path: " + path);
            TextureImporter textureImporter = AssetImporter.GetAtPath(path) as TextureImporter;
            textureImporter.textureFormat = newFormat; 
            AssetDatabase.ImportAsset(path);
        }
    }
   
    static Object[] GetSelectedTextures()
    {
        return Selection.GetFiltered(typeof(Texture2D), SelectionMode.DeepAssets);
    }
}

 

[edit] C# - ChangeTextureImportSettingsUnity3.cs


using UnityEngine;
using UnityEditor;

// /////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Batch Texture import settings modifier.
//
// Modifies all selected textures in the project window and applies the requested modification on the
// textures. Idea was to have the same choices for multiple files as you would have if you open the
// import settings of a single texture. Put this into Assets/Editor and once compiled by Unity you find
// the new functionality in Custom -> Texture. Enjoy! :-)
//
// Based on the great work of benblo in this thread:
// http://forum.unity3d.com/viewtopic.php?t=16079&start=0&postdays=0&postorder=asc&highlight=textureimporter
//
// Developed by Martin Schultz, Decane in August 2009
// e-mail: ms@decane.net
//
// Updated for Unity 3.0 by col000r in August 2010
// http://col000r.blogspot.com
//
// /////////////////////////////////////////////////////////////////////////////////////////////////////////
public class ChangeTextureImportSettingsUnity3 : ScriptableObject {
   
    [MenuItem ("Custom/Texture/Change Texture Format/Auto Compressed")]
    static void ChangeTextureFormat_AutoCompressed() {
        SelectedChangeTextureFormatSettings(TextureImporterFormat.AutomaticCompressed);
    }

    [MenuItem ("Custom/Texture/Change Texture Format/Auto 16bit")]
    static void ChangeTextureFormat_Auto16Bit() {
        SelectedChangeTextureFormatSettings(TextureImporterFormat.Automatic16bit);
    }

    [MenuItem ("Custom/Texture/Change Texture Format/Auto Truecolor")]
    static void ChangeTextureFormat_AutoTruecolor() {
        SelectedChangeTextureFormatSettings(TextureImporterFormat.AutomaticTruecolor);
    }
       
    [MenuItem ("Custom/Texture/Change Texture Format/RGB Compressed DXT1")]
    static void ChangeTextureFormat_RGB_DXT1() {
        SelectedChangeTextureFormatSettings(TextureImporterFormat.DXT1);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Format/RGB Compressed DXT5")]
    static void ChangeTextureFormat_RGB_DXT5() {
        SelectedChangeTextureFormatSettings(TextureImporterFormat.DXT5);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Format/RGB 16 bit")]
    static void ChangeTextureFormat_RGB_16bit() {
        SelectedChangeTextureFormatSettings(TextureImporterFormat.RGB16);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Format/RGB 24 bit")]
    static void ChangeTextureFormat_RGB_24bit() {
        SelectedChangeTextureFormatSettings(TextureImporterFormat.RGB24);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Format/Alpha 8 bit")]
    static void ChangeTextureFormat_Alpha_8bit() {
        SelectedChangeTextureFormatSettings(TextureImporterFormat.Alpha8);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Format/ARGB 16 bit")]
    static void ChangeTextureFormat_RGBA_16bit() {
        SelectedChangeTextureFormatSettings(TextureImporterFormat.ARGB16);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Format/RGBA 32 bit")]
    static void ChangeTextureFormat_RGBA_32bit() {
        SelectedChangeTextureFormatSettings(TextureImporterFormat.RGBA32);
    }

    [MenuItem ("Custom/Texture/Change Texture Format/ARGB 32 bit")]
    static void ChangeTextureFormat_ARGB_32bit() {
        SelectedChangeTextureFormatSettings(TextureImporterFormat.ARGB32);
    }

    [MenuItem ("Custom/Texture/Change Texture Format/RGB PVRTC 2bit")]
    static void ChangeTextureFormat_RGB_PVRTC_2bit() {
        SelectedChangeTextureFormatSettings(TextureImporterFormat.PVRTC_RGB2);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Format/RGBA PVRTC 2bit")]
    static void ChangeTextureFormat_RGBA_PVRTC_2bit() {
        SelectedChangeTextureFormatSettings(TextureImporterFormat.PVRTC_RGBA2);
    }   

    [MenuItem ("Custom/Texture/Change Texture Format/RGB PVRTC 4bit")]
    static void ChangeTextureFormat_RGB_PVRTC_4bit() {
        SelectedChangeTextureFormatSettings(TextureImporterFormat.PVRTC_RGB4);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Format/RGBA PVRTC 4bit")]
    static void ChangeTextureFormat_RGBA_PVRTC_4bit() {
        SelectedChangeTextureFormatSettings(TextureImporterFormat.PVRTC_RGBA4);
    }
       
    // ----------------------------------------------------------------------------
   
    [MenuItem ("Custom/Texture/Change Texture Size/Change Max Texture Size/32")]
    static void ChangeTextureSize_32() {
        SelectedChangeMaxTextureSize(32);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Size/Change Max Texture Size/64")]
    static void ChangeTextureSize_64() {
        SelectedChangeMaxTextureSize(64);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Size/Change Max Texture Size/128")]
    static void ChangeTextureSize_128() {
        SelectedChangeMaxTextureSize(128);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Size/Change Max Texture Size/256")]
    static void ChangeTextureSize_256() {
        SelectedChangeMaxTextureSize(256);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Size/Change Max Texture Size/512")]
    static void ChangeTextureSize_512() {
        SelectedChangeMaxTextureSize(512);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Size/Change Max Texture Size/1024")]
    static void ChangeTextureSize_1024() {
        SelectedChangeMaxTextureSize(1024);
    }
   
    [MenuItem ("Custom/Texture/Change Texture Size/Change Max Texture Size/2048")]
    static void ChangeTextureSize_2048() {
        SelectedChangeMaxTextureSize(2048);
    }
   
    // ----------------------------------------------------------------------------
   
    [MenuItem ("Custom/Texture/Change MipMap/Enable MipMap")]
    static void ChangeMipMap_On() {
        SelectedChangeMimMap(true);
    }
   
    [MenuItem ("Custom/Texture/Change MipMap/Disable MipMap")]
    static void ChangeMipMap_Off() {
        SelectedChangeMimMap(false);
    }
   
    // ----------------------------------------------------------------------------


    [MenuItem ("Custom/Texture/Change Non Power of 2/None")]
    static void ChangeNPOT_None() {
        SelectedChangeNonPowerOf2(TextureImporterNPOTScale.None);
    }
 
    [MenuItem ("Custom/Texture/Change Non Power of 2/ToNearest")]
    static void ChangeNPOT_ToNearest() {
        SelectedChangeNonPowerOf2(TextureImporterNPOTScale.ToNearest);
    }
   
    [MenuItem ("Custom/Texture/Change Non Power of 2/ToLarger")]
    static void ChangeNPOT_ToLarger() {
       SelectedChangeNonPowerOf2(TextureImporterNPOTScale.ToLarger);
    }

    [MenuItem ("Custom/Texture/Change Non Power of 2/ToSmaller")]
    static void ChangeNPOT_ToSmaller() {
        SelectedChangeNonPowerOf2(TextureImporterNPOTScale.ToSmaller);
    }   
   
    // ----------------------------------------------------------------------------

    [MenuItem ("Custom/Texture/Change Is Readable/Enable")]
    static void ChangeIsReadable_Yes() {
        SelectedChangeIsReadable(true);
    }
 
    [MenuItem ("Custom/Texture/Change Is Readable/Disable")]
    static void ChangeIsReadable_No() {
        SelectedChangeIsReadable(false);
    }   
   
    // ----------------------------------------------------------------------------




    static void SelectedChangeIsReadable(bool enabled) {
   
        Object[] textures = GetSelectedTextures();
        Selection.objects = new Object[0];
        foreach (Texture2D texture in textures)  {
            string path = AssetDatabase.GetAssetPath(texture);
            TextureImporter textureImporter = AssetImporter.GetAtPath(path) as TextureImporter;
            textureImporter.isReadable = enabled;   
            AssetDatabase.ImportAsset(path);
        }
    }


    static void SelectedChangeNonPowerOf2(TextureImporterNPOTScale npot) {
   
        Object[] textures = GetSelectedTextures();
        Selection.objects = new Object[0];
        foreach (Texture2D texture in textures)  {
            string path = AssetDatabase.GetAssetPath(texture);
            TextureImporter textureImporter = AssetImporter.GetAtPath(path) as TextureImporter;
            textureImporter.npotScale = npot;   
            AssetDatabase.ImportAsset(path);
        }
    }
   
    static void SelectedChangeMimMap(bool enabled) {
   
        Object[] textures = GetSelectedTextures();
        Selection.objects = new Object[0];
        foreach (Texture2D texture in textures)  {
            string path = AssetDatabase.GetAssetPath(texture);
            TextureImporter textureImporter = AssetImporter.GetAtPath(path) as TextureImporter;
            textureImporter.mipmapEnabled = enabled;   
            AssetDatabase.ImportAsset(path);
        }
    }
   
    static void SelectedChangeMaxTextureSize(int size) {
   
        Object[] textures = GetSelectedTextures();
        Selection.objects = new Object[0];
        foreach (Texture2D texture in textures)  {
            string path = AssetDatabase.GetAssetPath(texture);
            TextureImporter textureImporter = AssetImporter.GetAtPath(path) as TextureImporter;
            textureImporter.maxTextureSize = size; 
            AssetDatabase.ImportAsset(path);
        }
    }
   
    static void SelectedChangeTextureFormatSettings(TextureImporterFormat newFormat) {
   
        Object[] textures = GetSelectedTextures();
        Selection.objects = new Object[0];
        foreach (Texture2D texture in textures)  {
            string path = AssetDatabase.GetAssetPath(texture);
            //Debug.Log("path: " + path);
            TextureImporter textureImporter = AssetImporter.GetAtPath(path) as TextureImporter;
            textureImporter.textureFormat = newFormat; 
            AssetDatabase.ImportAsset(path);
        }
    }
   
    static Object[] GetSelectedTextures()
    {
        return Selection.GetFiltered(typeof(Texture2D), SelectionMode.DeepAssets);
    }
}

 
Personal tools