Notifications
bg
鲁帆
制作人 - Programmer
Shanghai, China
0
Likes
15
Followers
4
Connections
All
Articles0
Games0
Showcases0
Column0
Jobs0
鲁帆
Sep 28, 2019
请教一个性能问题
3D动作项目
用的是Unity最新的2019.2.6f1
场景无光照,没有烘焙
人物角色平均2500个面,战斗场景同屏约30000个面
其主要有2个场景
大厅场景(预览角色,角色是3D的模型);战斗场景(类似王者荣耀的战斗)
后处理我使用了PostProcessv2,只常驻了Bloom,其它效果未使用
在编辑器下看Profiler,没有任何耗时的函数
出安卓包(使用Mono模式)在真机上看,就会有以下问题:

1.在未锁帧的情况下,大厅场景平均帧数在48帧,大厅场景中有一个名为MeshSkinning.Update的函数耗时13ms,这应该是更新蒙皮,但为什么耗时这么夸张?我已经在模型上勾选了OptimizeGameObject,压缩了模型网格

2.在未锁帧的情况下,战斗场景平均帧数在26帧,在大厅场景中的MeshSkinning.Update耗时却降到了0.07ms,可战斗场景模型明明更多了,为什么蒙皮更新反而减少了呢?

3.战斗场景的主要耗时在UGUI.Rendering.UpdateBatches上其平均耗时有21ms,可战斗场景里只有角色身上的血条是用UGUI的World Canvas实现的,其它都是NGUI,为什么这个耗时这么夸张?

鲁帆
制作人
16 days ago
Reply@Pengyue Li1. 在profiler里可以看MeshSkinning.Update的子步骤耗时情况。如果Player Setting里的GPU skinning打开了,耗时主要在GPU skinning上;否则,可能主要耗时在CPU的calculateMatrices上;不过以上两种情况都与模型的skin mesh数量有关。可以看一下这篇blog: https://gameinstitute.qq.com/community/detail/112327 2. UGUI.Rendering.UpdateBatches的耗时一是与位置的移动有关,二是和Update中做的操作有关,因为血条的实时变化,导致canvas的dirty,然后触发计算。这方面,做好针对drawCall的优化,然后尽量减少update中的冗余操作吧 3. 以上都是推测,具体原因每个项目不一样,如果方便可以传个demo给我们
包有点问题要晚点出~到时候我留言..
鲁帆
制作人
16 days ago
Reply@Pengyue Li1. 在profiler里可以看MeshSkinning.Update的子步骤耗时情况。如果Player Setting里的GPU skinning打开了,耗时主要在GPU skinning上;否则,可能主要耗时在CPU的calculateMatrices上;不过以上两种情况都与模型的skin mesh数量有关。可以看一下这篇blog: https://gameinstitute.qq.com/community/detail/112327 2. UGUI.Rendering.UpdateBatches的耗时一是与位置的移动有关,二是和Update中做的操作有关,因为血条的实时变化,导致canvas的dirty,然后触发计算。这方面,做好针对drawCall的优化,然后尽量减少update中的冗余操作吧 3. 以上都是推测,具体原因每个项目不一样,如果方便可以传个demo给我们
好的,稍等
Pengyue Li
Developer Relations Engineer
16 days ago
Reply@Pengyue Li1. 在profiler里可以看MeshSkinning.Update的子步骤耗时情况。如果Player Setting里的GPU skinning打开了,耗时主要在GPU skinning上;否则,可能主要耗时在CPU的calculateMatrices上;不过以上两种情况都与模型的skin mesh数量有关。可以看一下这篇blog: https://gameinstitute.qq.com/community/detail/112327 2. UGUI.Rendering.UpdateBatches的耗时一是与位置的移动有关,二是和Update中做的操作有关,因为血条的实时变化,导致canvas的dirty,然后触发计算。这方面,做好针对drawCall的优化,然后尽量减少update中的冗余操作吧 3. 以上都是推测,具体原因每个项目不一样,如果方便可以传个demo给我们
能分别截图一下profiler里的MeshSkinning.Update子节点情况么
鲁帆
制作人
16 days ago
Reply@Pengyue Li1. 在profiler里可以看MeshSkinning.Update的子步骤耗时情况。如果Player Setting里的GPU skinning打开了,耗时主要在GPU skinning上;否则,可能主要耗时在CPU的calculateMatrices上;不过以上两种情况都与模型的skin mesh数量有关。可以看一下这篇blog: https://gameinstitute.qq.com/community/detail/112327 2. UGUI.Rendering.UpdateBatches的耗时一是与位置的移动有关,二是和Update中做的操作有关,因为血条的实时变化,导致canvas的dirty,然后触发计算。这方面,做好针对drawCall的优化,然后尽量减少update中的冗余操作吧 3. 以上都是推测,具体原因每个项目不一样,如果方便可以传个demo给我们
项目的话还在制作中,比较难剥离。其实我主要的疑问在于第二条:大厅中只有一个人物模型,但MeshSkinning.Update却有13ms;而战斗中最少都有4个模型,MeshSkinning.Update却只有0.07ms?
View More Comments
鲁帆joined anevent
直播|使用ML-Agents快速掌握强化学习
ONLINE EVENT
8:00 AM - 9:00 AM April 25, 2018 (Local: UTC-4)
08:00 - 09:00 Apr 25, 2018 (Local: UTC-4)
852 Participants
鲁帆interested/going anevent
Unite Beijing 2018
LOCAL EVENT
May 11, 2018 9:00 AM - May 13, 2018 5:00 PM (Local: UTC-4)
May 11, 2018 09:00 - May 13, 2018 17:00 (Local: UTC-4)
95 Participants
About Me
制作人,艺术家及Unity工程师
See more
Certifications (0)
Import
See all
鲁帆's liked projects (2)
Following (5)
Followers (15)
Following Companies (0)
Not following anyone yet