干货:Unity游戏开发图片纹理压缩方案

LuaStudio工具的应用

Unity3D引擎对纹理的拍卖是智能的:甭管你放入的是PNG,PSD还是TGA,它们还见面让机关转换成为Unity自己之Texture2D格式

转载2016-05-02 17:37:46

每当Texture2D的安装选项中,你得对不同的阳台,设置不同之压缩格式,如IOS设置成PVRTC4,Android平台安装成RGBA16等。

标签:it

啊,非常之智能。

以手游开发被,如果假定开代码的热更新,就需要采取Lua脚本,编写和调试Lua脚本就需平等磨蹭工具,这里介绍一磨蹭功能最强为是以打闹开发中因故到最多的平缓缓Lua编辑工具,它的名叫LuaStudio,这款软件用被Lua爱好者的追捧,就是坐它充分为Vs2013,并且产生充分强之代码提示

然而,在有进阶的采用着,一些场面是麻烦满足的。

​下面就介绍这款编辑软件的行使:

本,我们NGUI的图集纹理,在Android平台,使用ETC1纹理+Alpha通道图的方式;iOS平台,使用PVRTC4的纹理。

  1.  首次等打开软件之界面如下,然后单击左下比赛红框标示的Directory

分别图片纹理,要求清晰度较高之,使用RGBA16,但是下RGBA16之渐变显示图片也惨不忍睹;

pic01

一部分要求高保真的,则需一直以高品质的RGBA32格式。

​2.单击后的镜头如下,视图的左边是一个导航视图(导航视图很强大很有益),找到红色框标示的叫吧“Lua”的文件夹

过多时段,随着项目之复杂性需要发展,单纯的Unity纹理管理已无法满足我们的需求了。这时候,往往用我们开有外加工作。

pic02

小结一下自我好的纹路压缩方案:

​3.点击pic02所著之称也“Lua”的公文夹,在左下角会显示文件夹下富含的兼具选项

纹理压缩的国策

手游开发(Android/iOS)中,我会以3独级别的滑坡程度:高清晰无减、中清楚中减少、低清晰高回落;4栽减方法:RGBA32,
RGBA16+Dithering,ETC1+Alpha,PVRTC4。一般足够应付大部分之需求了。

pic03

强清晰无压缩 – RGBA32

图片 1

Unity RGBA32 – 高清晰无压缩.png

RGBA32均等于原来图了,优点是清、与原图一致,缺点是内存占用十分大;对于有画要求极好清晰度之图纸,是首选。

苟留意有png图片,在硬盘中占据几KB,怎么当Unity中显示也换大?因为Unity显示的是Texture大小,是实在运行时占用内存的大小,而png却是相同栽减显示格式;可以这样理解,png类似于zip格式,是一个压缩文件,只不过在运作时会自行解压解析罢了。

​4. 闭馆已经打开的某某脚本或者关闭所有都打开的台本,采用如下截图中智

受到清楚中压缩 – RGBA16 + Dithering

pic04

RGBA16 + Dithering

图片 2

Unity RGBA16,不抖动处理的渐变图片惨不忍睹

既叫RGBA16,自然就是是RGBA32底阉割版。
对于片采取渐变的图纸,从RGBA32变成RGBA16,能明显的看来颜色之层叠变化,如齐图。

图片 3

运用Floyd Steinberg抖动处理后,除非放大,否则肉眼基本看不起分

RGBA16的优点,内存占用是RGBA32之1/2;搭配上Dithering抖动,在原尺寸下看清晰度一型一样;

缺陷,Unity原生不支持Dithering抖动,需要团结举行工具对图片做处理;对于用推广、拉伸的图纸,Dithering抖动的支撑不好,会生酷明确的颗粒感。

  1. 经菜单栏Window-Windows打开对应之窗口,如下:

怎样进行Dithering抖动?

图片 4

Texture Packer工具中Image
Format选择RGBA4444,Dithering选择FloydSteinberg

于自身之种面临,TexturePacker具有十分重要之用意,像UI的图集生成,预先生成为好刚方形的IOS
PVRTC4图集和非正方形的Android ETC1图集、
缩放原图50%相当工作还由TexturePacker完成。

一致,对图像进行抖动处理,也是预先在TexturePacker使用FloydSteinberg算法进行图像抖动,再于Unity中导入使用。

TexturePacker提供命令行工具,可以做成自动化的工具。具体方法这里不详述。

pic05

RGB16

图片 5

Unity RGB16

如若RGB16,是主要对有,不带来透明通道,同时长宽又休是2的次方的图;对于这些图,使用RGB16可以减低一半底内存,但是效果会略逊于RGB32。

自矣,RGB16其实也是可搭配抖动,也克升官显示力量。

若是专注的是,Dithering抖动对拉伸放大是匪协调之

6.清理掉所有出口区域的内容

亚清晰高压缩 – ETC1+Alpha/PVRTC4

众多新家都见面纳闷,为什么游戏开发被常常见到有的图纸,需要安装成2的次方?因为像ETC1、PVRTC4等就好像以内存中无需解压、直接被GPU支持的格式,占用内存极低,而且性能效率也是绝好之。

唯独,相对RGBA32,还是会肉眼看到质量有下降的。

pic06

ETC1

ETC1+Alpha一般采用在Android版的UI图集中,ETC1休带来透明通道,所以用外挂一摆同是ETC1格式的Alpha通道图。方法是,在原RGBA32的原图中,提取RGB生成第一张ETC1,再提取A通道,填充另一样摆ETC1底R通道;游戏运行时,Shader将两张ETC1图形展开夹。

生成Alpha通道图的法门而参看:
http://blog.csdn.net/u010153703/article/details/45502895

新兴,由于不思量基于Unity
API生成透明图,我生成Alpha通道图的法。我使用Python的一个png.py库,用Python脚本来处理:

图片 6

png.py生成alpha图

只要配合ETC1+Alpha,还索要Shader支持,这里参考直接改动NGUI的Unlit/Transparent
With Colored的Shader。

图片 7

​7. 下图展示如何打开Lua代码调试功能(调试功能特别有力很便利)

PVRTC4

PVRTC4每当Unity中是直支持之,不过假如注意的底细是,它要是次不成正面方形;也就是说,长宽在二次方的还要,还须使当。

pic07-1

差一点种纹理格式的自查自纠

格式 内存占用 质量 透明 二次方大小 建议使用场合
RGBA32 1 ★★★★★ 无需 清晰度要求极高
RGBA16+Dithering 1/2 ★★★★ 无需 UI、头像、卡牌、不会进行拉伸放大
RGBA16 1/2 ★★★ 无需 UI、头像、卡牌,不带渐变,颜色不丰富,需要拉伸放大
RGB16+Dithering 1/2 ★★★★ 无需 UI、头像、卡牌、不透明、不会进行拉伸放大
RGB16 1/2 ★★★ 无需 UI、头像、卡牌、不透明、不渐变,不会进行拉伸放大
RGB(ETC1) + Alpha(ETC1) 1/4 ★★★ 需要二次方,长宽可不一样 尽可能默认使用,在质量不满足时再考虑使用上边的格式
RGB(ETC1) 1/8 ★★★ 需要二次方,长宽可不一样 尽可能默认使用,在质量不满足时再考虑使用上边的格式
PVRTC4 1/8 ★★ 需要二次方正方形,长宽一样 尽可能默认使用,在质量不满足时再考虑使用上边的格式
  • 内存占用,相对于RGBA32举行比较
  • 质地星级,更多是自我感受,仅供参考

一个经贸项目,混搭多种纹理格式是难免的事体。把路纹理划分成高、中、低三栽品质需,是这方案的视角。

每当类型受到,尽可能是应用ETC1及PVRTV4等GPU直接支持的图片格式,不仅内存占用小、性能也再好;当出现质量无合格时,再逐级的升级压缩格式,来满足急需。

假定pic07-1截图中debugging
Lua Script in  console mode选项勾选的语,则会弹出LuaStuidio控制台上

若是pic07-1截图中debugging
Lua Script in  console mode选项无勾选,则打印在控制台上

  1.  如何还打开Debugging  Settings

pic08

9.
下图展示LuaStudio工具的断点调试功能,在红色区域中,单击鼠标会出现一个革命实心圆圈,表示于这边添加一个断点,调试进行到断点时,程序会暂停,不断的按F11,可以逐行接着朝下执行

pic09

10.
 按下Ctrl的以,进行鼠标滚轮向前向后滚动,可以展开视图的放开与缩小,这点老相近VS2013器

11.​ LuaStudio支撑全局查找功能,这点被出带动非常十分之惠及

pic11

  1. 代码注释(程序中动用 — )

pic12

​13. 代码美观整洁功能

pic13

14,换行显示

14-1(此图也无点击换行图标的效益)

14-2
(此图也点击换行图标后的法力)

​以上罗列了LuaStudio编辑器在开中极常用之几件功能,其实LuaStudio还有不少效,但是由当开发被不经常采取,因此做稍微过处理

发表评论

电子邮件地址不会被公开。 必填项已用*标注