6

使用Sprite Packer对UI图集进行打包的问题

 2 years ago
source link: https://blog.uwa4d.com/archives/TechSharing_270.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

使用Sprite Packer对UI图集进行打包的问题

  • 作者:admin
  • 时间:5小时前
  • 浏览:23 次
  • 分类:厚积薄发

1)使用Sprite Packer对UI图集进行打包的问题
​2)Unity处理视锥剔除的问题
3)Profiler查看Shader.CreateGPUProgram的具体Shader信息
4)PPS的UberPost内存占用较高


这是第270篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。

UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)

Q:使用Sprite Packer对UI图集进行打包:
1. 使用系统自带的Sprite Packer打包,图集大小设置成1024,这样打出来的图集会分为好几个Group,那么相同图集不同Group能够合批吗?

2. 由于Sprite Packer是自动分配的Group,这种情况下打开功能的时候是所有Group都会加载的,那么这种设置1024是否还有必要,改成2048会不会好一点?

3. 图集设置成2048变大了,对加载速度和内存有影响吗?这个需要按图集里图片数量多少做不同的设置吗?

A:可以参考以下答案:

  1. 不同Group是不会合批的,一般也没有UI图集大小的建议。

  2. 最好自己手动控制图集的Group,在UI制作时可以以UI Prefab为单位收集一下哪些Group的图集是当前UI需要使用的,加载UI预设时按需加载对应的Group就好了。

  3. 如果图集中的图片资源都用到了,同时图集的填充率也差不多,那加载1张2048和4张1024,对加载影响可能并不是很明显,内存占用也是一样的,但如果2048填充率并没那么高,或许1024的会比较好。

该回答由UWA提供,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/6163e8f58f8c834241d6df7d


Rendering

Q:最近在研究场景管理的问题,想了解Unity是否有处理视锥剔除,于是做了测试(Unity 2020.3.11f)。创建了两个Cube,移动第二个Cube,对比顶点数量变化。

1.png

2.png

3.png

4.png

为什么同样在视锥体范围内,批次和顶点数会不同?当第二个Cube不在视锥范围内,顶点数也可能不同,那Unity是否有视锥剔除,其处理逻辑是怎么样的?

A:应该是灯光绘制ShaowMap时候,投影的范围将那个相机外的Cube包进去了,受Light的影响,关了Light就可以了。

感谢范世青@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/616119748f8c834241d33b81


Shader

Q:由于目前项目Shader挺复杂的,变体也非常的多,如果用ShaderVariantCollection的方式解析一次耗时太高了,而且如果用Shader.CreateGPUProgram耗时很高并且频率也很高,所以就想问下:有没有什么办法可以知道是哪个Shader造成的?这样我才好做策略去解决。

我以前Unity 2017是能够知道哪个Shader造成的,在Profiler里面可以把Shader.CreateGPUProgram继续展开,但是现在Unity 2018.4.36不行。

A:Profiler的Timeline视图可以看到。

感谢黄晓文@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/61543e5f8f8c834241c27996


Shader

Q:URP项目,下面这个Shader是做什么用的?有没有相关的变体算法和优化建议,谢谢。

5.png

A:UberPost是一个大杂烩,有好多处理都集中在这里,项目确定不用的变体之后,就可以用#pragma skip_variants xxx 跳过。例如:#pragma skip_variants _TONEMAP_NEUTRAL _DITHERING。

感谢怀特@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/61518b5e8f8c834241be8d2a

20211011
更多精彩问题等你回答~

封面图来源于网络


今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859(原群已满员)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK