首页 > 代码库 > Unity中各类物理投射性能横向比较
Unity中各类物理投射性能横向比较
测试工程下载地址:
http://files.cnblogs.com/files/hont/RaycastTestProj.rar
测试方式:
在某半径内随机若干Cube,然后以中心点发射各种投射进行测试
使用Unity5.3.4版本,并用Profiler和StopWatch进行测试并截图,比较性能和GC差异
由于胶囊之类的投射实在太慢了,我改用1000次调用进行测试,NonAlloc缓存数组长度为20
一些投射都做了距离限定
using UnityEngine; using System.Collections; using System.Diagnostics; public class BoxCastAllTest : MonoBehaviour { void Update() { var stopWatch = new Stopwatch(); stopWatch.Start(); Profiler.BeginSample("BoxCastAllTest"); for (int i = 0; i < 1000; i++) { Physics.BoxCastAll(transform.position, Vector3.one * 2f, Vector3.forward); } Profiler.EndSample(); stopWatch.Stop(); UnityEngine.Debug.Log("StopWatch: " + stopWatch.ElapsedMilliseconds); } }
测试结果:
名称 | 速度 | GC Alloc |
Raycast | 1ms | 0 |
RaycastAll | 2ms | 273.4KB |
RaycastNonAlloc | 1ms | 0 |
BoxCast | 18ms | 0 |
BoxCastAll | 38ms | 3.2MB |
BoxCastNonAlloc | 36ms | 0 |
SphereCast | 86ms | 0 |
SphereCastAll | 192ms | 8.8MB |
SphereCastNonAlloc | 183ms | 0 |
CapsuleCast | 139ms | - |
CapsuleCastAll | 449ms | 19.6MB |
CapsuleNonAlloc | 263ms | 0 |
球形投射和胶囊投射的开销都比较大,并且各种投射的速度开销都远高于直接发射射线。
可见,如果优先选择射线进行判断,就会对游戏优化有不少帮助
Unity中各类物理投射性能横向比较
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。