Unity3D中使用mesh collider和box collider的区别
踩坑过程记录。
设备是HTC的VIVE 和 Unity 5.x
CPU: Intel Xeon Silver 4116 * 2
GPU: NVIDIA Quadro P6000
RAM: 64GB
这个问题是在解决项目卡顿问题的同时出现的:
最近在用U3D做一个VR项目,需求是要给网格加碰撞体以实现获取手柄射线与网格碰撞的具体坐标,利用坐标去计算后面所需要的数据,并且看起来只有加碰撞体这一条路可以走。
这个project实际上是在前期已经做好了AssetsBundle,通过和用户的交互,来动态加载网格的这样一个过程。一开始我在想给所有的mesh手动加碰撞体,直接框起来加collider,结果证明超级卡,直接卡着不动了。
在制作Bundle时加上Mesh Collider
开始决定在批量制作制作Prefab的时候加上碰撞体,然后再制作bundle。在代码上加了两句 X.AddComponent<MeshCollider();
X.GetComponent<MeshCollider().mesh = MESHNAME;
MESHNAME是对应的网格名称,对应相应的网格。做完bundle,并且替换完开始测试。结果实在是太夸张了,原来运行的时候加载网格一帧只要0.18秒左右,加完mesh collider后用Unity的profiler工具监测每一帧发现在加载的时候加载一帧需要2s…结果如下图。