为什么使用图集?
①减少DrawCall:在Unity中,通常渲染一个纹理会调用一次DrawCall。一个项目中包含大量的纹理,如果绘制每个纹理都调用一次DrawCall,这会占用过多的资源,从而影响整个游戏的性能。
②减少内存占用:比如你有一张宽高为90x90和一张宽高为9x9的图片,如果不合成大贴图,那么需要使用128x128和16x16的两张图片(分别是2的7次方和2的4次方)。但如果使用一张大图的话,可以把90x90和9x9的图片放到128x128的大图中,这样就用一张图片。
1.先选择3张图标,放入到同一文件夹Assets/Atlas/Main

2.然后建一个简单的UI,放入3个图标,此时没有打图集,Batches显示是4

3.打开Package Manager,导入2D Sprite

4.在Assets/Atlas/Main文件夹下,右击创建Sprite Atlas

5.文件夹下会多出一个文件Sprite Atlas文件

6.点击图集查看Inspector面板,提示图集功能关闭

7.点击提示,会自动弹开设置,自己根据需求设置打开状态

8.把整个文件夹拖进去,就可以对整个文件夹打图集,然后点击Pack Preview就可以预览图集

9.重要参数详解,只解释几个重要参数,因为这几个参数在实际游戏开发中,经常会出现问题。详细的可以点击下面官网连接

- Include in Build:选中此复选框可在当前构建中包含精灵图集资源。默认情况下会启用此选项。
- Allow Rotation:是否允许图片旋转,如果允许旋转,则可以最大限度提高组合后的纹理中的精灵密度。但是会导致某些图片旋转颠倒。默认开启,建议关闭!
- Tight Packing:选中此复选框可根据精灵轮廓而非默认矩形轮廓来打包精灵。这样可以最大限度提高组合后的纹理中的精灵密度,并且默认情况下会启用此选项。但是会导致某些图片错位,建议关闭。
官方链接:
https://docs.unity3d.com/cn/current/Manual/class-SpriteAtlas.html
10.此时再看Batches已经变成2了

11.代码中,动态替换图片
public Image img;
void Start()
{
//加载图集,这里用了AssetDatabase加载,实际项目中根据自己的代码来加载
string path = "assets/atlas/main/main.spriteatlas";
Object asset = AssetDatabase.LoadAssetAtPath(path, typeof(SpriteAtlas));
SpriteAtlas atlas = asset as SpriteAtlas;
//替换图片
img.sprite = atlas.GetSprite("icon_shop");
}
Unity图集使用教程与性能优化
本文介绍了在Unity游戏中使用SpriteAtlas技术来减少DrawCall数量和内存占用,通过合并小纹理到大图集,以及配置图集设置,提升性能并实现动态替换图片的示例。
1855

被折叠的 条评论
为什么被折叠?



