Unity图集简介及使用

Unity图集简介及使用

定义

图集是将很多零碎的2D小图整合成一张大图,方便unity渲染合批,降低渲染消耗。

优势

1.UI的合批处理,减少DrawCall

多张图片需要多次DrawCall,合并成一张大图只需要调用一次DrawCall

2.减少对内存的占用

OpenGL每张贴图都需要设置为2的N次方才能使用,假设有宽高分别为100x100、10x10的两张图片,如果不合成大贴图,那么就需要分别使用128x128和16x16的图片,会浪费一部分内存空间。

如果是使用一张大图的话,就可以将两张图片打到128x128的图集,进而减少内存的占用。

3.提升效率

图片尺寸为2的次幂时,GPU处理起来会快很多,小图不可能做不到每张图都是2的次幂的,但打成一张大图就可以。

图集整理策略

1.尽量紧凑,大小不要超过512x512

2.Draw Call尽量少,同一个界面的小图尽量在一个图集里

3.内存管理方便,加载性能好,打开一个界面时只加载必要的图集,关闭时可以方便地释放图集

4.AssetBundle打包、热更粒度合理,不能出现“热更一个新界面,大量图集都需要热更”的情况

5.设计UI时要考虑重用性,将边框、按钮等共享资源,放在1~3张大图集中,作为重用图集;

6.其它非重用UI按照功能模块进行划分,每个模块使用1~2张图集,作为功能图集;

7.对于部分UI,如果同时用到功能图集与重用图集,但是其功能图集剩下的“空位”较多,则可以将重用图集中用到的元素单独拎出来,合入功能图集中,让UI只依赖于功能图集。通过一定的数据冗余,来实现性能的提升;

注意控制图集的大小,不要让图集太大,一个超级大图集的DrawCall消耗或许顶的上十几个小图集的消耗

使用

1.Edit → Project Setting → Editor → Project Settings

→Sprite Packer

三种模式

Disabled表示不启用它,

Enabled For Builds 表示只有打包的时候才会启用它,

Always Enabled 表示永远启用它。

设置Always Enabled

2.在Assets下的Images文件夹建立一个图片文件夹test,将集中到图集的图片放置到此文件夹中

3.右键—>Create–>Sprite Atlas,命名为test

4.选择Buttons图集,在Objects for Packing中选择图片文件夹test

点击Pack Previes,图集建立完成。

参考资料

【内存优化】图集整理策略

Unity SpriteAtlas的学习

Unity图集的创建与简单的使用(上)

### Unity使用 Sprite Atlas 的注意事项 当在 Unity 项目中应用 Sprite Atlas 来优化资源加载效率时,有几个重要的方面需要注意: #### 图集配置选项的选择 对于 `Objects for Packing` 参数,可以选择指定文件夹、纹理或者单个 Sprite 加入特定的 Sprite Atlas 中[^1]。这种灵活性允许开发者根据项目的实际需求来组织和管理不同类型的美术资产。 #### 创建与保存图集实例 通过脚本创建一个新的 Sprite Atlas 实例并将其存储于项目中的 Assets 文件夹下是一个常见的做法。这可以通过如下 C# 代码实现: ```csharp var spriteAtlas = new SpriteAtlas(); AssetDatabase.CreateAsset(spriteAtlas, "Assets/sample.spriteatlas"); ``` 此方法有助于自动化构建过程或动态调整打包策略[^2]。 #### 替代方案对比 尽管 Sprite Atlas 和旧版工具如 Sprite Packer 功能相近,但在某些情况下可能更适合采用后者;例如,在处理特殊格式或是兼容性问题时。因此了解两者之间的差异也是必要的[^3]。 #### 性能考量下的最佳实践 为了最大化利用 Sprite Atlas 提供的好处而不引入不必要的负担,遵循以下几点建议尤为重要: - **减少 IMGUI (OnGUI)** :应尽可能地避免使用 OnGUI 函数绘制界面元素,转而选用 UGUI 组件以降低 CPU 占用率。 - **禁用无用射线投射**:对于那些不参与交互操作的对象来说,关闭其 Raycast Target 属性能够节省宝贵的 GPU 资源。 - **剔除全透明材质**:即便视觉上不可见,完全透明的对象也会消耗一定量的渲染时间。故而在设计阶段就应当考虑去除此类冗余项。 - **防止过度堆叠 UI 控件**:多层嵌套虽不影响整体表现力却增加了额外的工作负载。所以尽量简化层次结构可带来更流畅的游戏体验。 - **优选 TextMeshPro 渲染文字**:相较于内置字体组件而言,TextMeshPro 不仅提供了更好的显示效果而且提高了运行速度。然而值得注意的是它可能存在字符编码方面的局限性特别是针对非拉丁字母表的语言环境[^4]。 #### 特殊功能探索 除了上述常规指导原则外,还存在一些高级特性值得深入研究。比如支持自定义比例因子的功能可以让开发人员更好地控制最终输出质量的同时兼顾内存占用情况。另外,“变种模式”的概念则提供了一种灵活的方式来管理和共享多个版本间的公共素材[^5]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值