前几天公司有个项目,由于美术做了很多背景图并且还大量的使用了渐变过度,导致压缩图片后效果非常差,而且换成RGBA16效果也不理想,如果用RGBA32那就太浪费效率了。后来发现TexturePacker具有添加图片抖动的方式,由于项目组使用了UGUI手动一个个设置这太麻烦了,所以就做了个工具。如下图所示,明显能看到RGBA16渐变的地方效果不好,但是添加了抖动同样RGBA16效果就挺好了。
如下图所示,我们测试了一下FloydSteinberg这种抖动算法效果还算满意。
如下图所示, 将需要添加抖动的图片放入input文件夹下,然后执行 a.sh(mac下shell脚本) a.bat(win下批处理) 会自动将抖动过的图片输出到output文件夹中。
TexturePacker的安装就不用说了,注意安装的目录就行了。
a.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#!/bin/bash project_path=$(cd `dirname $0`; pwd) project_input="${project_path}/input" project_output="${project_path}/output" rm -rf "${project_output}" mkdir "${project_output}" texturePacker="/Applications/TexturePacker.app/Contents/MacOS/TexturePacker" cd ${project_input} files=$(ls ${project_input}) for filename in $files do ${texturePacker} "${project_input}/${filename}" --format spritesheet-only --texture-format png --opt RGBA4444 --dither-type FloydSteinberg --trim-mode None --sheet "${project_output}/${filename}" done |
a.bat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
set project_path=%~dp0 set project_input=%project_path%\input set project_output=%project_path%\output set texturePacker="C:\Program Files\CodeAndWeb\TexturePacker\bin\TexturePacker.exe" rd /s /q %project_output% md %project_output% for /R %project_input% %%f in (*.*) do ( %texturePacker% %project_input%\%%~nxf --format spritesheet-only --texture-format png --opt RGBA4444 --dither-type FloydSteinberg --trim-mode None --sheet %project_output%\%%~nxf ) pause |
通过我们的测试,绝大部分图片都可以通过此法解决。
- 本文固定链接: https://www.xuanyusong.com/archives/4596
- 转载请注明: 雨松MOMO 于 雨松MOMO程序研究院 发表
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!
MOMO大神,你知道如何获取unity3d Inspector面板中的材质预览图吗?
如何把这个预览图用代码的方式保存到另一个目录里
AssetPreview.GetAssetPreview 试试这个吧
雨松大大,unity2019里,inspector的部分好像改了很多,可以分析下UGUI的inspector面板在2019中的修改么?
这个可以直接看C#部分的源码,unity editor下的代码是开源的。。 有空我也分享一下
及时雨。谢松哥~