图片导入

图片导入

using UnityEngine;
using System.Collections;
using UnityEditor;
/// <summary>
/// 批量图片资源导入设置
/// 使用说明: 选择需要批量设置的贴图,
/// 单击DuanMenu/Texture Import Settings,
/// 打开窗口后选择对应参数,
/// 点击Set Texture ImportSettings,
/// 稍等片刻,--批量设置成功。
/// </summary>


public class TextureImportSetting : EditorWindow {
	
	/// <summary>
	/// 临时存储int[]
	/// </summary>
	private int[] IntArray = new int[] { 0, 1, 2, 3, 4, 5, 6, 7 };
	//AnisoLevel
	private int AnisoLevel = 1;
	//Filter Mode
	private int FilterModeInt = 0;
	private string[] FilterModeString = new string[] { "Point", "Bilinear", "Trilinear" };
	//Wrap Mode
	private int WrapModeInt = 0;
	private string[] WrapModeString = new string[] { "Repeat", "Clamp" };
	//Texture Type
	private int TextureTypeInt = 0;
	private string[] TextureTypeString = new string[] { "Texture", "Normal Map", "GUI", "Refelection", "Cookie", "Lightmap", "Advanced" };
	//Max Size
	private int MaxSizeInt = 5;
	private string[] MaxSizeString = new string[] { "32", "64", "128", "256", "512", "1024", "2048", "4096" };
	//Format
	private int FormatInt = 0;
	private string[] FormatString = new string[] { "Compressed", "16 bits", "true color" };
	
	/// <summary>
	/// 创建、显示窗体
	/// </summary>
	[@MenuItem("DuanMenu/Texture Import Settings")]
	private static void Init()
	{    
		TextureImportSetting window = (TextureImportSetting)EditorWindow.GetWindow(typeof(TextureImportSetting), true, "TextureImportSetting");
		window.Show();
	}
	
	/// <summary>
	/// 显示窗体里面的内容
	/// </summary>
	private void OnGUI()
	{
		//AnisoLevel
		GUILayout.BeginHorizontal();
		GUILayout.Label("Aniso Level  ");
		AnisoLevel = EditorGUILayout.IntSlider(AnisoLevel, 0, 9);
		GUILayout.EndHorizontal();
		//Filter Mode
		FilterModeInt = EditorGUILayout.IntPopup("Filter Mode", FilterModeInt, FilterModeString, IntArray);
		//Wrap Mode
		WrapModeInt = EditorGUILayout.IntPopup("Wrap Mode", WrapModeInt, WrapModeString, IntArray);
		//Texture Type
		TextureTypeInt = EditorGUILayout.IntPopup("Texture Type", TextureTypeInt, TextureTypeString, IntArray);
		//Max Size
		MaxSizeInt = EditorGUILayout.IntPopup("Max Size", MaxSizeInt, MaxSizeString, IntArray);
		//Format
		FormatInt = EditorGUILayout.IntPopup("Format", FormatInt, FormatString, IntArray);
		if (GUILayout.Button("Set Texture ImportSettings"))
			LoopSetTexture();
	}
	
	/// <summary>
	/// 获取贴图设置
	/// </summary>
	public TextureImporter GetTextureSettings(string path)
	{
		TextureImporter textureImporter = AssetImporter.GetAtPath(path) as TextureImporter;
		//AnisoLevel
		textureImporter.anisoLevel = AnisoLevel;
		//Filter Mode
		switch (FilterModeInt)
		{
		case 0:
			textureImporter.filterMode = FilterMode.Point;
			break;
		case 1:
			textureImporter.filterMode = FilterMode.Bilinear;
			break;
		case 2:
			textureImporter.filterMode = FilterMode.Trilinear;
			break;
		}
		//Wrap Mode
		switch (WrapModeInt)
		{
		case 0:
			textureImporter.wrapMode = TextureWrapMode.Repeat;
			break;
		case 1:
			textureImporter.wrapMode = TextureWrapMode.Clamp;
			break;
		}
		//Texture Type
		switch (TextureTypeInt)
		{
		case 0:
			textureImporter.textureType = TextureImporterType.Image;
			break;
		case 1:
			textureImporter.textureType = TextureImporterType.Bump;
			break;
		case 2:
			textureImporter.textureType = TextureImporterType.GUI;
			break;
		case 3:
			textureImporter.textureType = TextureImporterType.Reflection;
			break;
		case 4:
			textureImporter.textureType = TextureImporterType.Cookie;
			break;
		case 5:
			textureImporter.textureType = TextureImporterType.Lightmap;
			break;
		case 6:
			textureImporter.textureType = TextureImporterType.Advanced;
			break;
		}
		//Max Size 
		switch (MaxSizeInt)
		{
		case 0:
			textureImporter.maxTextureSize = 32;
			break;
		case 1:
			textureImporter.maxTextureSize = 64;
			break;
		case 2:
			textureImporter.maxTextureSize = 128;
			break;
		case 3:
			textureImporter.maxTextureSize = 256;
			break;
		case 4:
			textureImporter.maxTextureSize = 512;
			break;
		case 5:
			textureImporter.maxTextureSize = 1024;
			break;
		case 6:
			textureImporter.maxTextureSize = 2048;
			break;
		case 7:
			textureImporter.maxTextureSize = 4096;
			break;
		}
		//Format
		switch (FormatInt)
		{
		case 0:
			textureImporter.textureFormat = TextureImporterFormat.AutomaticCompressed;
			break;
		case 1:
			textureImporter.textureFormat = TextureImporterFormat.Automatic16bit;
			break;
		case 2:
			textureImporter.textureFormat = TextureImporterFormat.AutomaticTruecolor;
			break;
		}
		return textureImporter;
	}
	
	/// <summary>
	/// 循环设置选择的贴图
	/// </summary>
	private void LoopSetTexture()
	{
		Object[] textures = GetSelectedTextures();
		Selection.objects = new Object[0];
		foreach (Texture2D texture in textures)
		{
			string path = AssetDatabase.GetAssetPath(texture);
			TextureImporter texImporter = GetTextureSettings(path);
			TextureImporterSettings tis = new TextureImporterSettings();
			texImporter.ReadTextureSettings(tis);
			texImporter.SetTextureSettings(tis);
			AssetDatabase.ImportAsset(path);
		}
	}
	
	/// <summary>
	/// 获取选择的贴图
	/// </summary>
	/// <returns></returns>
	private Object[] GetSelectedTextures()
	{
		return Selection.GetFiltered(typeof(Texture2D), SelectionMode.DeepAssets);
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值