今天给大家提供一个自动去掉图片mipmap勾选的小工具的制作方法。
大家对Lod应该都有所了解,其原理是根据摄像机和模型之间不同距离(准确地讲,应该是模型所占摄像机视口的比例,距离越远比例越小,反之越大)而采用不同精细度(网格的顶点数和三角形数量不一样)的网格mesh,距离越远采用精细度越低的网格(即顶点数和三角形数越少的网格),以提高渲染效率。mipmap有些像lod,不同的是,它在贴图上面动了手脚,根据不同距离采用不同精细度(贴图的像素不一样)的贴图。
应用lod和mipmap都可以不同程度上提高渲染效率,但是由于都需要在内存里面放着多个不同精细度的副本,所以,代价是需要消耗更多的内存。
对于UI贴图来说,我们不必应用mipmap,因为一般的UI都是“平铺”在正交摄像机视口的,和摄像机木有距离这一概念,所以我们大可以把UI贴图的mipmap选项去掉,以节省内存。默认情况下导入的贴图是开启mipmap选项的,如果手动一个一个改的话,必然蛋疼,那么,就写脚本批量改吧。
我们优化就是从减少DrawCall开始的,减少DrawCall需要使用批处理技术开始的。mipmap针对的是纹理贴图,大白话就是,一个模型身上会有贴图,当我们对这个贴图使用了MipMap技术之后,那么在游戏运行中这个模型的贴图会根据摄像机距离模型的远近而调整不同的不同质量的贴图显示。
当我们给一个模型贴了一个贴图,当我们没有对这个贴图使用MipMap技术的时候,无论我们摄像机距离模型的位置在哪,这张贴图永远都是显示一样的,这样是完全没有必要的,我们使用这个技术就是为了让当摄像机比较远的时候,你用在精细的贴图我们玩家也看不见,而且还浪费资源,提高了性能瓶颈。
使用MipMap技术之后,会对这个贴图生成八张精度质量不同的贴图,所以内存占用变大了。所以关于这个技术是否使用,根据你的项目而定,什么都是有利有弊的。
mipmap介绍完了,接下来先看代码:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using UnityEditor;
public class FindAllTexture {
[MenuItem("CunstomFunction/CancelUIMipMap")]
static void GetTexture()
{
List<string> allTex