现在Unity中使用UGUI实现UI的越来越多,我们项目也才4.6.1升级到5.6.3对项目全面升级。5.x中UGUI已经非常成熟,各种资料各种效果都非常多。由于之前一直习惯用NGUI在使用UGUI还是比较顺利的,都是一个作者写的都是控件式开发,唯一不爽的一点就是UGUI的图集管理。
习惯了NGUI的图集管理,在使用UGUI的时候也想把他们打包到一张图集上,查看了UGUI的打包方式,本以为和NGUI一样可以可以把分散的小图打到一张大图上。一直是这么理解的打包图集。
在打包工具中是一张图片,UGUI这样打包的优势是在使用这些图片的时候他们的DrawCalls就不会在增加了,我看别的有可以打到一张大图的,不知道为什么我这里没有成功,我unity版本是5.6.3f。
自带的打包工具没有满足要求,寻找其他解决方案,在网上找到了TexturePackerGUI这个工具,看到TexturePackerGUI支持Unity。
可以直接把需要打包的图片放到软件中进行打包组合,这里不涉及效率问题单纯只是进行打包。
这样就可以打包到一张图片上来,当然你也可以进行一下其他的设置,图片格式等等。
NGUI我们可以直接遍历图集获取到里面的全部子图片,直接支持图集类获取到。使用UGUI也可以获取到全部子图片但是需要自己写一个方案实现。
public Image btn;
void Start () {
string str = "text";//Resources文件夹下面的名字
//SpriteRenderer[] sp = Resources.LoadAll<SpriteRenderer>(str);
Sprite[] sprite = Resources.LoadAll<Sprite>(str);
foreach (var item in sprite)
{
print(item.name);
}
btn.sprite = sprite[2];
}
这样就和NGUI比较相似了,可以进行图集打包和获取全部图集,这样做还可以优化图集的大小。