关于CanvasRenderer.SyncTransform触发调用的机制
- 作者:admin
- /
- 时间:9小时前
- /
- 浏览:35 次
- /
- 分类:厚积薄发
1)关于CanvasRenderer.SyncTransform触发调用的机制
2)小游戏Spine裁剪掉帧问题
3)Dedicated Server性能问题
4).mp4视频放入RT进行渲染的性能分析闭坑指南
这是第421篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。
UWA社区主页:community.uwa4d.com
UWA QQ群:793972859
UI
Q:已知UGUI主要耗时函数Rendering.UpdateBatches下的堆栈CanvasRenderer.SyncTransform调用次数较高确实会导致更高的整体耗时。看文档和字面意思,应该是UI元素Transform信息变化后进行同步,但实际项目中测下来发现调用次数远比预期的要高,所以这个东西实际的机制到底是什么?
A:在Unity 2021和2022的较新稳定版本上都做了实验,发现有以下几种情况:
- 任何UI元素Transform信息变化(如位移、旋转、拉伸,例如飘字这类Ul动画)都会导致自身触发一次CanvasRenderer.SyncTransform。若同时发生Transform信息变化的UI元素多,则显然会导致调用次数高,比如像我们项目场景中玩家和野怪单位的大量HUD元素会随着玩家视角变化频繁位移。
- 调用SetActive(True)激活UI元素时,会使当前Canvas下和其父Canvas下所有UI元素都触发CanvasRenderer.SyncTransform。特别地,调用SetActive(False)隐藏UI元素时,不会触发。
- Instantiate实例化UI元素时,会使当前Canvas下和其父Canvas下所有UI元素都触发CanvasRenderer.SyncTransform。
- Destroy销毁UI元素时,会仅使当前Canvas下所有UI元素都触发CanvasRenderer.SyncTransform。
PS:以上API未实际生效时(如对一个已经被激活的对象调用SetActive(True)),则不会触发CanvasRenderer.SyncTransform。
所以定位到问题后,优化手段上还是UI这块老生常谈的解放方案:即对1这种情况主要考虑控制更新频率;对其他情况则是关注Canvas的层级设计,做好动静分离。
该回答由UWA提供,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/67bbeb12682c7e5cd61bfa06
Animation
Q:小游戏Spine裁剪为什么帧率一下子就下来了,请问有什么解决办法吗?
A:Spine Clipping性能开销很大,以下文档里面说了解决方案,就是要么不用,要么减少Clipping Attachment组件多边形的复杂程度:
https://en.esotericsoftware.com/spine-clipping
感谢李显得@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/67bbde0c3d306f3e9d594e63
Server
Q:把一个带物理世界的Scene通过Dedicated Server-Linux发布成服务器程序,想通过Mirror实现状态同步,但是发现CPU占用率好高,在一个2核的服务器中都有10%++,这还只是静止的场景,即使场景Collider只有一个,也是那么高,请问这种的应该怎么办?
像上述这种情况,一个局内对战就是一个服务器程序,但一个服务器根本就开不了几个服务器程序。
针对以上问题,有经验的朋友欢迎转至社区交流:
https://answer.uwa4d.com/question/67b949773d306f3e9d594e62
Rendering
Q:项目后期可能会大量使用视频,请问对.mp4视频放入RT进行渲染的性能分析有没有什么闭坑指南,比如对于视频解码产生的内存进行控制等等。
针对以上问题,有经验的朋友欢迎转至社区交流:
https://answer.uwa4d.com/question/67b7214c3d306f3e9d594e61
封面图来源于网络
今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。
UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859