lyh916

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  201 随笔 :: 0 文章 :: 12 评论 :: 21万 阅读

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 }
复制代码

 

posted on   艰苦奋斗中  阅读(488)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示