游戏中的换装需求
MMORPG游戏经常会给主角定义这样一些模块:手套、鞋子、衣服、裤子、武器、翅膀和帽子。
统计一下部件数量,总共7个部件,加上角色本体模型,就是8个部件了,如果再来个跟随对象,如狗狗:狗狗背包、狗狗项圈、狗狗眼镜、狗狗本体,这样又要加上4个部件了。在Unity引擎里,上面提到的1个部件就是1次渲染DrawCall,如果有穿插可能是2个DrawCall。
安装换装需求,现在主流的手机游戏通常要求20~30人同屏。如果美国角色8 + 5 = 13个部件,30人同屏,需要消耗约 30 * 13 = 390个DrawCall。对于通常运行得比较流畅的游戏,他们的DrawCall都在200以内,是一个比较健康的数字。如果安装换装需求,这样是很难让游戏流畅地运行的。关键问题是SkinnedMeshRender不能合并DrawCall的。
优化DrawCall是所有程序员必须要做的工作。一个游戏,60%以上的性能占用,都在渲染上面,而优化渲染,必须要控制DrawCall的数量。
事实上SkinnedMeshRender是不能直接合并DrawCall的,Draw Call Batching
https://docs.unity3d.com/Manual/DrawCallBatching.html
Currently, only Mesh Renderers, Trail Renderers, Line Renderers, Particle Systemsand Sprite Renderersare batched. This means that skinned Meshes, Cloth, and other types of rendering components are not batched.
603

被折叠的 条评论
为什么被折叠?



