当前位置: 首页 > news >正文

Unity图集使用事项

一. 图集布局算法

紧密填充是一种常见的图集布局算法,它的主要目标是尽可能地减少图集的空间浪费。该算法会根据图像的形状和大小,将它们紧密地排列在图集中,以确保最小化空白区域的存在。这样可以有效地利用内存,并减少图集的尺寸。

二. 图集最大尺寸:2048

在 Unity 中,图集(Sprite Atlas)的最大尺寸是 2048x2048 像素。这是因为在移动设备和一些平台上,较大的图集可能会导致性能下降和内存占用增加。因此,为了平衡性能和质量,Unity 设定了这样的最大尺寸限制。

三. 多个小图集 vs. 少量大图集

1. 性能

  • 多个小图集 提供更好的性能。当使用较大的图集时,需要加载整个图集才能使用其中的某个图像。这可能会导致较长的加载时间和占用更多的内存。

  • 多个小图集 允许按需加载,仅加载需要的图集,从而减少加载时间和内存占用。

2. 内存管理

  • 少量大图集 可能会增加内存管理的复杂性。当一个大图集加载到内存中时,其中的所有图像都会占用内存。如果只使用其中一部分,就会造成内存浪费。

  • 多个小图集 可以更灵活地进行加载和卸载,更好地管理内存。

3. 渲染性能

  • 少量大图集 在渲染性能方面可能稍微优于多个小图集。渲染器可以更高效地处理和渲染大图集,而多个小图集可能需要更多的批次(draw call),稍微影响渲染性能。

总结

选择多个小图集还是少量大图集,应根据具体项目需求和平台限制来决定:

  • 多个小图集:在 性能和内存管理 方面更具优势。

  • 少量大图集:在 渲染性能 方面可能更优。

四. 移动设备上选择图集的压缩格式

1. 设备性能影响

  • 低性能设备:使用较轻量级的压缩格式,如 ETC1ASTC,减少显存占用和加载时间。

  • 高性能设备:可以考虑更高质量的压缩格式,如 ASTCPVRTC2,以提高图像质量。

2. iOS 平台推荐格式

  1. PVRTC

    • 基于硬件的纹理压缩格式,iOS 设备广泛支持。

    • 具有较高的压缩比和较低的内存占用,适用于较小的图集。

  2. ASTC

    • 更先进的硬件压缩格式,也受到 iOS 设备的支持。

    • 提供更高的图像质量和更低的内存占用,适用于需要更高质量图像的情况。

3. 安卓平台推荐格式

  1. ETC2

    • ETC1 的扩展版本,支持透明度压缩和更高的图像质量。

    • 适用于需要较高质量和半透明效果的图集。

  2. ASTC

    • Android 设备广泛支持的硬件压缩格式。

    • 提供更高的图像质量和更低的内存占用,适用于对图像质量有较高要求的情况。

4. 为什么不直接使用最好的 ASTC?

  • 设备支持:并非所有设备都支持 ASTC。较老或低端设备可能不支持 ASTC,导致图集无法正常显示或影响性能。

  • 内存占用:ASTC 可以提供较高的压缩比,但解压缩时会增加内存开销。如果项目对内存管理要求严格,ASTC 可能不是最佳选择。

  • 加载性能:ASTC 纹理解压需要额外的计算资源,可能导致 加载时间变长,尤其是在较低性能的设备上。


图集的压缩格式

压缩格式特点适用场景
RGBA32无损,高质量,但占用大UI 精细图标、需要透明通道
RGB24无损,但不支持透明不透明的 UI 贴图
ASTC / ETC2GPU 硬件压缩,适合移动端绝大部分 UI 贴图,节省显存
PVRTCiOS 专用,节省显存但可能影响清晰度适用于 iOS 设备
http://www.lryc.cn/news/545779.html

相关文章:

  • Flutter 学习之旅 之 flutter 在 Android 端读取相册图片显示
  • RagFlow专题二、RagFlow 核心架构(数据检索、语义搜索与知识融合)
  • 解决各大浏览器中http地址无权限调用麦克风摄像头问题(包括谷歌,Edge,360,火狐)后续会陆续补充
  • 【SpringBoot+Vue】博客项目开发二:用户登录注册模块
  • (十 二)趣学设计模式 之 享元模式!
  • leetcode第77题组合
  • Linux | Ubuntu 与 Windows 双系统安装 / 高频故障 / UEFI 安全引导禁用
  • Docker入门指南:Windows下docker配置镜像源加速下载
  • web前端基础修炼手册
  • 【无标题】Ubuntu22.04编译视觉十四讲slambook2 ch4时fmt库的报错
  • macos下myslq图形化工具之Sequel Ace
  • 【AHK】资源管理器自动化办公实例/自动连点设置
  • 通用查询类接口数据更新的另类实现
  • Linux ls 命令
  • 【问题记录】Go项目Docker中的consul访问主机8080端口被拒绝
  • 面试题:说一下你对DDD的了解?
  • React低代码项目:问卷编辑器 I
  • 蓝桥杯2024年真题java B组 【H.拼十字】
  • Spring MVC 程序开发(1)
  • PyCharm接入本地部署DeepSeek 实现AI编程!【支持windows与linux】
  • Linux服务升级:Almalinux 升级 DeepSeek-R1
  • Linux操作系统5- 补充知识(可重入函数,volatile关键字,SIGCHLD信号)
  • ctfshow刷题笔记—栈溢出—pwn61~pwn64
  • java23种设计模式-责任链模式
  • 新一代跨境电商ERP系统:从订单到发货的全流程自动化管理
  • 苹果廉价机型 iPhone 16e 影像系统深度解析
  • hive 面试题
  • VScode在windows10上使用clang-format
  • AWS API Gateway灰度验证实现
  • 【每日八股】MySQL篇(三):索引(上)