【NGUI】当打包一个特别大的图集时候该怎么减小图集大小?
2015-12-11 00:52
591 查看
在unity中。带有透明通道的图片压缩后。均会出现一定的质量的下降。并且带有透明通道的图片占用内存较大。之前一直没有想到解决方案。最近看了一个游戏项目。里面有一个很好的解决方案。我研究了一下。就分享出来了。
它的具体就是将透明通道和图片内容剥离开来。在用Shader合并。这样就能减少一半的大小。
![](http://www.xiaobao1993.com/wp-content/uploads/2015/05/7.png)
![](http://www.xiaobao1993.com/wp-content/uploads/2015/05/7.png)
导出后。我们得到一个tga图片和一个txt配置。我们将tga用ps打开。然后找到图片的通道处:如下:
![](http://www.xiaobao1993.com/wp-content/uploads/2015/05/8.png)
如上。我们选中Alpha 1.右键。删除该透明通道。然后将图片存储为bmp图片。
然后。我们可以在菜单中后退一步。或者重新打开没有删除透明通道的图片。执行如下操作。
1.选中Alpha1. 按 ctrl + c 复制改透明通道。
2.选中 红 通道。ctrl + v 粘贴通道。绿 蓝 通道执行同样的操作。
3.删除Alpha 1 透明通道。将图片保存为bmp。
最后得到如下文件
![](http://www.xiaobao1993.com/wp-content/uploads/2015/05/9.png)
我们将图片移到Unity中。做成图集。然后给图集的材质球赋值我们的shader(Shader代码在最下)。
![](http://www.xiaobao1993.com/wp-content/uploads/2015/05/4.png)
然后我们来对比下。普通的和剥离的效果区别:
![](http://www.xiaobao1993.com/wp-content/uploads/2015/05/1.png)
效果没什么变化。然后。我们在看下另一个数据:
![](http://www.xiaobao1993.com/wp-content/uploads/2015/05/10.png)
一张只有没剥离的四分之一。然后在加一张透明通道。也只是1M。
最后。我们看下内存监察的数据图:
![](http://www.xiaobao1993.com/wp-content/uploads/2015/05/12.png)
它的具体就是将透明通道和图片内容剥离开来。在用Shader合并。这样就能减少一半的大小。
效果及方法
首先。我们将图片放入tp中。类型悬着tga。然后导出。如下:![](http://www.xiaobao1993.com/wp-content/uploads/2015/05/7.png)
![](http://www.xiaobao1993.com/wp-content/uploads/2015/05/7.png)
导出后。我们得到一个tga图片和一个txt配置。我们将tga用ps打开。然后找到图片的通道处:如下:
![](http://www.xiaobao1993.com/wp-content/uploads/2015/05/8.png)
如上。我们选中Alpha 1.右键。删除该透明通道。然后将图片存储为bmp图片。
然后。我们可以在菜单中后退一步。或者重新打开没有删除透明通道的图片。执行如下操作。
1.选中Alpha1. 按 ctrl + c 复制改透明通道。
2.选中 红 通道。ctrl + v 粘贴通道。绿 蓝 通道执行同样的操作。
3.删除Alpha 1 透明通道。将图片保存为bmp。
最后得到如下文件
![](http://www.xiaobao1993.com/wp-content/uploads/2015/05/9.png)
我们将图片移到Unity中。做成图集。然后给图集的材质球赋值我们的shader(Shader代码在最下)。
![](http://www.xiaobao1993.com/wp-content/uploads/2015/05/4.png)
然后我们来对比下。普通的和剥离的效果区别:
![](http://www.xiaobao1993.com/wp-content/uploads/2015/05/1.png)
效果没什么变化。然后。我们在看下另一个数据:
![](http://www.xiaobao1993.com/wp-content/uploads/2015/05/10.png)
一张只有没剥离的四分之一。然后在加一张透明通道。也只是1M。
最后。我们看下内存监察的数据图:
![](http://www.xiaobao1993.com/wp-content/uploads/2015/05/12.png)
Shader代码
Shader "Test/UIETC" { Properties { _MainTex ("Base (RGB)", 2D) = "white" { } _AlphaTex("AlphaTex",2D) = "white"{} } SubShader { Tags { "Queue" = "Transparent+1" } Pass { Lighting Off ZTest Off Blend SrcAlpha OneMinusSrcAlpha Cull Off CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" sampler2D _MainTex; sampler2D _AlphaTex; float _AlphaFactor; struct v2f { float4 pos : SV_POSITION; float2 uv : TEXCOORD0; float4 color :COLOR; }; half4 _MainTex_ST; half4 _AlphaTex_ST; v2f vert (appdata_full v) { v2f o; o.pos = mul (UNITY_MATRIX_MVP, v.vertex); o.uv = v.texcoord; o.color = v.color; return o; } half4 frag (v2f i) : COLOR { half4 texcol = tex2D (_MainTex, i.uv); half4 result = texcol; result.a = tex2D(_AlphaTex,i.uv)*i.color.a ; return result; } ENDCG } } }
工程下载地址
链接:http://pan.baidu.com/s/1jGtKLMY 密码:lxhw相关文章推荐
- mysql_query设置字符集为utf8,解决中文乱码的问题
- 《Elasticsearch: The Definitive Guide》读书笔记2
- UESTC 839
- 爬爬爬之路:UI(十七) 数据持久化(SQLite3数据库实现)
- UESTC 838
- IOS UIColor 自定义颜色
- IOS基础-导航栏控制器 UINavigationController
- UILongPressGestureRecognizer的selector多次调用解决方法
- 【译】UI设计基础(UI Design Basics)--自动适配与布局(Adaptivity and Layout)(四)
- 我的iOS学习历程 - UICollection详解
- 随意细解:UI -- 数据库
- IOS UISearchBar
- UI基础-数据库
- IOS UISearchBar(一)
- UI-第三讲:视图控制器
- IOS UITableView (五)
- 对web的request的全部值进行了提取
- easyui
- UIScrollView, UIPageControl 的详细使用
- Devexpress VCL Build v2015 vol 15.2 开始测试