精灵图集(Sprite Atlas)简介
unity项目中使用精灵(Sprite)和其他图形来创建其场景的视觉效果。这意味着单个项目中可能包含许多纹理(texture) 文件。Unity 通常会为场景中的每个纹理发出一个绘制调用(DrawCall);但是,在具有许多纹理的项目中,过多的绘制调用会占用大量资源,并会对项目的性能产生负面影响。
为了降低性能消耗,我们可以使用精灵图集(Sprite Atlas)技术,它能够将多个纹理合并成一个大纹理,当访问图集中的多个纹理时,也只需要调用一次DrawCall。
精灵图集的使用
关于Sprite Atlas 的使用可以参考–这里
在查找相关资料时由知乎文章:【Unity游戏开发】SpriteAtlas与AssetBundle最佳食用方案 得知不同的打包方案,即:
- 对照组A&B,将散图文件夹作为一个AssetBundle包。
- 对照组C&D,将Sprite Atlas文件作为一个AssetBundle包。
对照组实验
以下所有结论均在Unity 2021.3.11下得出

文件结构

两个AssetBundle包。

其中testImage使用了一个图集中的图元

-
A组:
勾选Include in build
打包散图文件夹,不打包SpriteAtlas
使用方式:_bundle2 = AssetBundle.LoadFromFile(Application.streamingAssetsPath + @"\testatlas.u3d"); img1.sprite = _bundle2.LoadAsset<Sprite>("gameS-num1"); img2.sprite = _bundle2.LoadAsset<Sprite>("gameS-num2");需要先加载atlas包,再使用prefab,否则build后 prefab无法正常显示纹理(editor下正常)
结论:
1. 使用两张散图,DrawCall仍记为1;
2. AB包中除了所有散图外,仍会有一张合并后的大图;
下图由AssetStudio分别读取AB包中的内容
testatlas.u3d:

testimage.u3d:

3. 改变图元调用的次数后
3498




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



