问答 如何查看子线程中的 GC Alloc

侑虎科技 · 2020年05月12日 · 840 次阅读

1)如何查看子线程中的 GC Alloc
2)Build 时,提示安卓 NDK 异常
3)如何获得 ParticleSystem 产生的三角形数量
4)关于图片通道的问题
5)GPUSkinning 导致模型动画不平滑


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

Mono

Q:我把一些大计算量的东西放到了子线程中,现在想看下有没有 GC Alloc,但是没找到像 Profiler.BeginSample/Profiler.EndSample 这样的方法,看不到子线程中的 GC Alloc,只能看到时间开销。请问要怎么才能看到子线程中的 GC Alloc 呢?

A:直接通过 UWA 线上深度测评服务中的 Mono 详细堆内存分析即可查看子线程中的堆内存分配情况。《UWA 新功能 | 多线程模式下也能定位堆内存问题了!》

该回答由 UWA 提供


Build

Q:使用 Unity 2019.3 版本 Build 时,提示安卓 NDK 异常,报错如下,大家有遇到过吗?该如何解决呢?

A:这是 Unity 2019.3 的一个bugIssue Tracker
Mac 版已修复,但是 Windows 版本 2019.3.1f1 未修复,导致 Android 打包失败,并且 Google 官网上的 NDK 版本也不匹配,现在有一个曲线救国的办法:


我们将 C:\Program Files\Unity\Hub\Editor\2019.3.0f6\Editor\Data\PlaybackEngines\AndroidPlayer\NDK\android-ndk-r19(Unity 安装目录下的 NDK 目录)下的内容拷贝到上级 “NDK” 文件夹下,再将勾选选中,此警告就会消失。

感谢郑骁@UWA问答社区提供了回答


ParticleSystem

Q:希望获得项目中每一个特效在发射时产生的三角形数量。使用编辑器 Stats 窗口人工操作不仅耗时,而且峰值也难以捕捉,基本不考虑。

有没有代码或者其它可以自动化的方法,获得一个 ParticleSystem 当前全部粒子的三角形数量,或者获得一个摄像机内的三角形数量?

A:粒子系统有个属性 ParticleCount,通过它能获取到当前粒子数量 N,然后再获取每个粒子的三角形数 M,通过 ParticleSystemRenderer.renderMode 这个属性,如果是 Mesh,那么得到这个 Mesh 的三角形数,如果是 Billboard 可以简单地认为三角形数为 2;通过粒子数量乘以三角形数(N*M)应该可以得到总的三角形数。楼主可以试验一下是否有用。

感谢李星@UWA问答社区提供了回答


Texture

Q:为什么 png 格式的图片在 PS 里面没有 Alpha 通道,但图片导入 Unity 后显示都有 Alpha 通道?

A:png 没有 Alpha,只有 transparency。Unity 把图片的 transparency 读出来显示为 Alpha。

感谢 fubbi1000@UWA 问答社区提供了回答


Animation

Q:GPUSkinning 导致模型动画不平滑,我参照
https://github.com/chengkehan/GPUSkinning 实现的 GPUSkinning,发现模型动画不是很平滑,特别是当动画播放速度调慢后很明显一卡一卡的,正常 1.0 的速度看不出太大的问题。骨骼烘焙贴图格式为 ARGBHalf 的,大家遇到过类似的问题吗?

A:采样的帧率是不是小了。默认是不会在两帧之间进行插值的,所以当帧率小了,速度慢了看上去就是一卡一卡的。

感谢 jim@UWA 问答社区提供了回答


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

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册