码迷,mamicode.com
首页 > 编程语言 > 详细

Unity中各类物理投射性能横向比较

时间:2016-12-14 22:00:50      阅读:869      评论:0      收藏:0      [点我收藏+]

标签:date()   做了   方式   ast   unit   lis   img   cas   src   

 

测试工程下载地址:

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中各类物理投射性能横向比较

标签:date()   做了   方式   ast   unit   lis   img   cas   src   

原文地址:http://www.cnblogs.com/hont/p/6180822.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!