• [Unity工具]批量修改Texture


    BatchModifyTexture.cs

     1 using UnityEngine;
     2 using System.Collections;
     3 using UnityEditor;
     4 using System.IO;
     5 
     6 public class BatchModifyTexture {
     7 
     8     [MenuItem("Assets/BatchModifyTexture")]
     9     static void Init()
    10     {
    11         //获取Project视图中的选中目录下的所有图片
    12         Object[] objects = Selection.GetFiltered(typeof(Object), SelectionMode.Unfiltered);
    13         string dir = Application.dataPath.Substring(0, Application.dataPath.LastIndexOf("/")) + "/" + AssetDatabase.GetAssetPath(objects[0]);
    14         //Debug.LogError(dir);
    15         string[] paths = Directory.GetFiles(dir, "*.png", SearchOption.AllDirectories);
    16 
    17         //创建存放目录
    18         string saveDir = Application.dataPath + "/BatchModifyTexture";
    19         if (!Directory.Exists(saveDir))
    20         {
    21             Directory.CreateDirectory(saveDir);
    22         }
    23 
    24         //图片处理
    25         for (int i = 0; i < paths.Length; i++)
    26         {
    27             string path = paths[i];
    28             string assetPath = path.Substring(path.IndexOf("Assets/"));
    29             string name = assetPath.Substring(assetPath.LastIndexOf("\") + 1);
    30             //Debug.LogWarning(assetPath);
    31             //Debug.LogWarning(name);
    32 
    33             //设置成可读
    34             TextureImporter textureImporter = AssetImporter.GetAtPath(assetPath) as TextureImporter;
    35             textureImporter.textureType = TextureImporterType.Advanced;
    36             textureImporter.isReadable = true;
    37             AssetDatabase.ImportAsset(assetPath);
    38 
    39             //图片颜色变亮
    40             Texture2D tex = AssetDatabase.LoadAssetAtPath<Texture2D>(assetPath);
    41             Color[] colors = tex.GetPixels(0, 0, tex.width, tex.height);
    42             Texture2D texTemp = new Texture2D(tex.width, tex.height);
    43             Color[] colorsTemp = new Color[colors.Length];
    44 
    45             for (int j = 0; j < colors.Length; j++)
    46             {
    47                 colorsTemp[j] = colors[j] * 2f;
    48             }
    49             texTemp.SetPixels(0, 0, tex.width, tex.height, colorsTemp);
    50             texTemp.Apply();
    51             byte[] bytes = texTemp.EncodeToPNG();
    52             File.WriteAllBytes(saveDir + "/" + name, bytes);
    53         }
    54 
    55         AssetDatabase.Refresh();
    56         Debug.Log("BatchModifyTexture Finish");
    57     }
    58 }
  • 相关阅读:
    C# 缓存介绍与演示(转)
    sql server 2005中表的数据与excel互相导入导出的方法
    java.exe,javac.exe,javaw.exe,jar,javadoc 区别
    C# 装箱和拆箱、理论概念(非原创)
    Maven概述(非原创)
    理解java String(非原创)
    JVM JRE JDK区别于联系(非原创)
    LINQ to SQL与LINQ to Entities场景之对照(非原创)
    J2EE系统开发环境配置
    ASP.NET MVC 拦截器(转)
  • 原文地址:https://www.cnblogs.com/lyh916/p/9092099.html
Copyright © 2020-2023  润新知