首页 > Unity3D频道 > 【Unity3D研究院之游戏开发】 > Unity3D研究院之UGUI安卓自动ETC1通道分离(九十一)
2016
12-26

Unity3D研究院之UGUI安卓自动ETC1通道分离(九十一)

网上已经有类似的解决方案,原理就是在做一张通道图,然后在shader里混合。代价就是需要做个shader在做一个脚本代替Image 和RawImage。

今天我发现其实unity自己已经做了这个功能了,不用写shader,也不用替换脚本,原生支持就是方便啊。

先看看我的图集,ETC1 压缩格式

Unity3D研究院之UGUI安卓自动ETC1通道分离(九十一) - 雨松MOMO程序研究院 - 1

1.升级你的unity到5.5(有可能unity5.4也可以)

2.Sprite必须设置Packing Tag(只有图集才支持)

3.设置所有UI贴图的格式为ETC1(无论透明还是不透明)

4.如下图所示,勾选Compress using ETC1(split alpha channel) (可以写个工具自动批量修改)

Unity3D研究院之UGUI安卓自动ETC1通道分离(九十一) - 雨松MOMO程序研究院 - 2

5.搞定

测试机器是小米pad1,先看看真机上的效果。

Unity3D研究院之UGUI安卓自动ETC1通道分离(九十一) - 雨松MOMO程序研究院 - 3

今天我还发现了另外一个问题,在某些android机器上可能会显示成这样。

Unity3D研究院之UGUI安卓自动ETC1通道分离(九十一) - 雨松MOMO程序研究院 - 4

我第一反应这肯定是unity的bug,我想办法解决了一下。

下载unity5.5的内置shader。有一个叫UI-DefaultETC1的shader拖入工程,在ProjectSetting->GraphicsSettings里添加进去。

Unity3D研究院之UGUI安卓自动ETC1通道分离(九十一) - 雨松MOMO程序研究院 - 5

真机Profiler下,很清楚的看见透明图已经被unity分离了。

Unity3D研究院之UGUI安卓自动ETC1通道分离(九十一) - 雨松MOMO程序研究院 - 6

大家请在看上面的安卓真机Profiler的图。Unity把一张1024X1024的图拆分成 0.5M大小 和1M大小 的两张图, 0.5M 就是ETC1的压缩图, 另外一个1M 我猜就是对应 Alpha  8 格式。 这样就算图片有的透明渐变的效果也会是很好的。 强烈建议大家使用啊~ 如果是1024大小 这样从truecolor的4M减少到现在1.5M 效果还是很可观的。

大家赶紧测试吧。。 有问题欢迎在下面给我留言哈。。

 

雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!

--

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。

  1. 你的第三点,说“设置所有UI贴图的格式为ETC1(无论透明还是不透明)“,但是我实际操作的时候,把一张100*100的带alpha通道的图,format设置RGB Compressed ETC 4bits, compressusing ETC1(split alpha channel)打勾。但是 下面警告提示: 一个是需要tag , 一个是only pot texture can….事实上我设置了tag,不懂提示的原因。我用的是unity5.5 personal

  2. 每次unity3D导出iOS项目后,都要配置好多SDK, 请问雨松大神有没有方法可以提前在Xcode中配置好这些东西,然后每次导出直接buildAndRun

  3. 请问MOMO ios平台有相应的分离alpha图的UGUI解决方案么?之前的NGUI是分离rgb图和alpha图达到节省资源的目的现版本的Ugui有解决方案么?或者能提供个扩展思路吗? O(∩_∩)O谢谢~ Unity3D研究院之UGUI安卓自动ETC1通道分离(九十一) - 雨松MOMO程序研究院 - 1

  4. 看了下Unity5.4.3已经有这个功能啦, 感谢雨松大大分享, 还有我想请问雨松大大, 现在游戏图集一般都是用1024 * 1024吗, 那种大背景的图片怎么办