博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【NGUI】当打包一个特别大的图集时候该怎么减小图集大小?
阅读量:4087 次
发布时间:2019-05-25

本文共 1555 字,大约阅读时间需要 5 分钟。

在unity中。带有透明通道的图片压缩后。均会出现一定的质量的下降。并且带有透明通道的图片占用内存较大。之前一直没有想到解决方案。最近看了一个游戏项目。里面有一个很好的解决方案。我研究了一下。就分享出来了。

它的具体就是将透明通道和图片内容剥离开来。在用Shader合并。这样就能减少一半的大小。

效果及方法

首先。我们将图片放入tp中。类型悬着tga。然后导出。如下:

导出后。我们得到一个tga图片和一个txt配置。我们将tga用ps打开。然后找到图片的通道处:如下:

如上。我们选中Alpha 1.右键。删除该透明通道。然后将图片存储为bmp图片。

然后。我们可以在菜单中后退一步。或者重新打开没有删除透明通道的图片。执行如下操作。

1.选中Alpha1. 按 ctrl + c 复制改透明通道。

2.选中 红 通道。ctrl + v 粘贴通道。绿 蓝 通道执行同样的操作。

3.删除Alpha 1 透明通道。将图片保存为bmp。

 

最后得到如下文件

我们将图片移到Unity中。做成图集。然后给图集的材质球赋值我们的shader(Shader代码在最下)。

然后我们来对比下。普通的和剥离的效果区别:

效果没什么变化。然后。我们在看下另一个数据:

一张只有没剥离的四分之一。然后在加一张透明通道。也只是1M。

最后。我们看下内存监察的数据图:

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

转载地址:http://mukii.baihongyu.com/

你可能感兴趣的文章
AndroidStudio向量图修改插件(VectorPathTweaker)
查看>>
合并 Ijkplayer 和 ffmpeg-metadata-retriever
查看>>
Blender v2.79b 的编译与使用
查看>>
Java Annotation 修改 Field 变量的初始化语句。
查看>>
百度新闻同款左右切换按钮,悬浮变形
查看>>
真正解决 Android-29 无法查看系统源码的问题 (终极方案)
查看>>
安卓webview打印PDF、离线页面的标准做法
查看>>
Sortablejs + css 模仿安卓桌面,实现可拖拽排序的主页图标+文件夹收纳
查看>>
又一 Java 注解(annotation)用例
查看>>
FFmpeg+Python打造命令行工具箱
查看>>
NotePad++使用、魔改笔记
查看>>
仿Via浏览器在长按位置显示置功能菜单栏
查看>>
如何让安卓的进度条在被触摸后立即开始调整数值?
查看>>
如何更精细地调整安卓系统的音量级别?
查看>>
Openstack Swift 原理、架构与API介绍
查看>>
Swift 存储目录
查看>>
Swift Proxy 调用流程(源码剖析)
查看>>
Swift API和Command
查看>>
Swift build(.build)和ring(.gz)的数据结构和文件的持久化机制
查看>>
FastDFS介绍
查看>>