最近面临一个比较大的挑战,就是大量角色的战斗,coc采用的是2d贴图,但我们希望用3d模型,这就导致了不得不对性能进行一次彻底的研究优化。
1.判断物体是否在摄像机内,本来用unity自带的onwillrenderobject,发现非常耗时,改成自己用相机矩阵计算,节省了70%的时间。
2.动态batch比想象中还要耗性能,尽量使用静态batch,动态并不万能,而且限制很多。改了之后,高峰从10ms减少到3ms,也差不多70%。
3.有大量的drawvbo,应该是shader数学计算太多,这个是因为我要使用很多效果,导致shader过于复杂。但实际使用发现就是2ms的差别,我觉得不是这个问题。看了下如何进行骨骼动画优化:
http://docs.unity3d.com/ScriptReference/SkinnedMeshRenderer.BakeMesh.html
https://forums.unrealengine.com/showthread.php?75836-Saving-vertex-positions-of-a-skeletal-mesh-pose-dumping-them-to-file-in-real-time
www.flamebaitgames.com/?p=544
http://forum.unity3d.com/threads/baking-skinning-for-per