什么是精灵图集
是一种将多个图片合并为一个大图片的资源。
为什么使用图集
- 纹理的长或宽不能恰好符合2的幂次(通常是UI资源)
Unity使用非2的幂纹理大小,会稍微多一些内存并且GPU采样速度可能更慢
如果平台或 GPU 不支持 NPOT 纹理大小,Unity 会对纹理进行缩放和填充以达到下一个 2 的幂大小。
图集可设置为2的幂次,并将多个图片包含在图集其中 - Unity 通常会为场景中的每个纹理发出一个绘制调用;
在具有许多纹理的项目中,多个绘制调用会占用大量资源,并会对项目的性能产生负面影响。
使用图集可以调用此单个纹理来发出单个绘制调用而不是发出多个绘制调用,能够以较小的性能开销一次性访问压缩的纹理
使用图集
准备
- 启用 sprite packer
Edit -> Project Settings -> Editor -> Sprite Packer-> Mode
Disabled Unity 不打包图集
Enabled For Builds 发布时打包
Always Enabled Unity 编辑器中运行和发布时都会打包 - 安装2d Sprite包
创建图集和图集属性
- Asset->Create->2D->Sprite Atlas
- 允许在 Unity 将精灵打包到精灵图集时旋转精灵。打包ui时建议取消勾选。 因为 Unity 在打包期间旋转精灵图集中的纹理时,也会在场景中旋转它们的方向
- Read/Write Enabled 选中此复选框允许从脚本函数访问纹理数据
如果启用此属性,Unity 将创建纹理数据的副本。这会使纹理资源所需的内存量翻倍,并可能对性能产生负面影响。
默认禁用该选项。此属性仅适用于未压缩纹理或 DXT 压缩纹理 - 变体精灵图集接受主图集内容的副本以用作自己的内容,
scale 属性设置变体精灵图集的缩放因子,范围介于 0.1 到 1 之间,
变体图集纹理的大小是主图集纹理乘以 Scale 值的结果。
它们的主要目的是创建另一个精灵图集的纹理的变化,但使用不同的缩放分辨率。
避免同时包含图集和变体精灵图集的项目中,如果两者都在包含在构建中,那么共有精灵使用的纹理可来自任意精灵图集 - include in build
是否在在当前构建中包含精灵图集资源。
勾选,构建版本会在运行时自动加载图集并设置精灵;取消勾选,不会包含在构建中且不会自动加载图集
不使用aa和ab
图集勾选 include in build即可
构建时,图集进入构建文件中
使用addressable打包图集
- 图集勾选 include in build 并放置到aa中, 图集引用的图片不需要放置到aa中,图集会自动包含引用的精灵,但不包含精灵的纹理
- 构建时,Unity不会将勾选了Include in build并放置到aa中的图集打包到执行文件中
- 如果图集和图集引用的精灵都没有放置到aa中,aa会自动将图集放置到aa中
使用ab包打包图集
图集勾选include in build 但不设置包名,图集引用的图片设置同一个包名即可。
构建时图集不会进入构建文件中
查看ab包内容工具
AssetStudio
UI 性能分析工具
Unity内置Profiler,快捷键:Ctrl+7或者顶部菜单栏 Window->Analysis->Profiler
Frame Debugger ,Window->Analysis->Frame Debugger
参考资料
SpriteAtlas与AssetBundle最佳食用方案
Addressables之资源管理
精灵图集