最近在优化摄像机部分代码,抽了个时间对物理投射这块进行了系统性的测试,发现了不少东西

测试工程下载地址:

http://files.cnblogs.com/files/hont/RaycastTestProj.rar

测试方式:

在某半径内随机若干Cube,然后以中心点发射各种投射进行测试

使用Unity5.4.1版本,并用Profiler和StopWatch进行测试并截图,比较性能和GC差异

由于胶囊之类的投射实在太慢了,我改用1000次调用进行测试,NonAlloc缓存数组长度为20

一些投射都做了距离限定

脚本基本如下:

for (int i = ; i < ; i++)
{
Physics.BoxCastAll(transform.position, Vector3.one * 2f, Vector3.forward, Quaternion.identity, );
}

测试结果:

名称 速度 GC Alloc
Raycast 1ms -
RaycastNonAlloc 2ms -
RaycastAllTest 2ms 273.4KB
Linecast 1ms -
BoxCastTest 17ms -
BoxCastNonAllocTest 18ms -
BoxCastAllTest 20ms 1.5MB
CheckBoxTest 1ms -
OverlapBoxTest 62ms 2.4MB
OverlapBoxNonAllocTest 24ms -
CapsuleCastTest 162ms -
CapsuleCastNonAllocTest 227ms -
CapsuleCastAllTest 336ms 12.7MB
CheckCapsuleTest 1ms -
OverlapCapsuleTest 84ms 2.1MB
OverlapCapsuleNonAllocTest 30ms -
SphereCastTest 96ms -
SphereCastNonAllocTest 171ms -
SphereCastAllTest 226ms 8.8MB
CheckSphereTest 1ms -
OverlapSphereTest 33ms 1.5MB
OverlapSphereNonAllocTest 16ms -

射线和线段的开销非常小,撇开这个可以发现,性能消耗的顺序是这样的

从小到大:

CheckXXX -> OverlapXXX -> XXXCast

其中Check系列方法的开销极小

从投射物来看,从小到大分别是:Box > Sphere > Capsule

Unity中各类物理投射性能横向比较的更多相关文章

  1. 关于Unity中的物理

    碰撞器Colliders Unity有两种类型的碰撞体:网格碰撞体(Mesh Colliders)和原始碰撞体(Primitive Colliders). 网格碰撞体组件使用导入的网格数据,可用于环境 ...

  2. 游戏的物理和数学:Unity中的弹道和移动目标提前量计算

    下载地址:https://www.jianguoyun.com/p/DZPN6ocQ2siRBhihnx8 弹道计算是游戏里常见的问题,其中关于击中移动目标的自动计算提前量的话题,看似简单,其实还是挺 ...

  3. Unity - 2D中的物理关节

    本文概述: 分析Unity中几个2D物理关节组件的基本功能.使用方法.运用场景等 开发环境:Unity2019.3.0a2 / VS2017 项目资源包: 2D Joints Starter 说明: ...

  4. 喵的Unity游戏开发之路 - 推球:游戏中的物理

    很多童鞋没有系统的Unity3D游戏开发基础,也不知道从何开始学.为此我们精选了一套国外优秀的Unity3D游戏开发教程,翻译整理后放送给大家,教您从零开始一步一步掌握Unity3D游戏开发. 本文不 ...

  5. 如何在Unity中创造真实的水

    你将要创造什么 Unity是由Unity Technologies开发的多平台游戏引擎,用于为控制台,移动设备,计算机甚至网站等多种设备创建视频游戏和应用程序.Unity的核心优势在于其稳健性,可移植 ...

  6. 总结使用Unity 3D优化游戏运行性能的经验

    原地址:http://www.gameres.com/msg_221889.html 作者:Amir Fasshihi 流畅的游戏玩法来自流畅的帧率,而我们即将推出的动作平台游戏<Shadow ...

  7. 【Unity技巧】Unity中的优化技术

    http://blog.csdn.net/candycat1992/article/details/42127811 写在前面 这一篇是在Digital Tutors的一个系列教程的基础上总结扩展而得 ...

  8. (转)总结使用Unity 3D优化游戏运行性能的经验

    http://www.199it.com/archives/147913.html 流畅的游戏玩法来自流畅的帧率,而我们即将推出的动作平台游戏<Shadow Blade>已经将在标准iPh ...

  9. [转]总结使用Unity 3D优化游戏运行性能的经验

    转载自:http://www.gameres.com/msg_221889.html 作者:Amir Fasshihi 流畅的游戏玩法来自流畅的帧率,而我们即将推出的动作平台游戏<Shadow ...

随机推荐

  1. 自定义组件-IPEdit

    输入IP用的.....支持windows风格显示 unit HSIPEdit; // ********************************************************* ...

  2. ORM系列之二:EF(2)Code First

    目录 1. Code First是什么? 2. Code First 简单示例 3. 数据存储 4. 迁移 Code First是什么 Code First 顾名思义就是先写代码,当然不是乱写,而是按 ...

  3. 弱网测试Android

    弱网测试一般是指模拟在网络环境比较差的情况下,检测APP是否有异常,如崩溃,数据收发出现丢包的情况 一.首先需要控制网络,有两种方式其一使用网络损伤仪进行,其二采用软件方式.硬件采购费用太贵,因此使用 ...

  4. 常用git命令纪录

    git branch xxx 新建分支xxx git branch -a 查看所有分支(包括远程) git remote add origin http://xxx.git  在本地添加一个远程仓库, ...

  5. MVC4与JSON交互的知识总结

    一:jquery传递JSON给MVC4后台 1.JSON传递单个参数给Controller某个Action方法 [前台js] $(document).ready(function () { var p ...

  6. 4,4s屏幕过渡页处理

    //#import "sys/utsname.h" struct utsname systemInfo; uname(&systemInfo); NSString *dev ...

  7. 数据迁移工具sqoop

    有问题........数据迁移工具sqoop sqoop安装 [root@sqoop data]# wget  wget http://apache.fayea.com/sqoop/1.4.6/sqo ...

  8. git用.gitignore忽略指定文件

    .gitignore 配置文件用于配置不需要加入版本管理的文件,配置好该文件可以为我们的版本管理带来很大的便利,以下是个人对于配置 .gitignore 的一些心得. 1.配置语法: 以斜杠“/”开头 ...

  9. 一个DNS统计,RCFs,工具站点

    RCFs http://www.statdns.com/rfc/ DNS resources A collection of DNS related resources DNS Servers Nam ...

  10. 理工科应该的知道的C/C++数学计算库(转)

    理工科应该的知道的C/C++数学计算库(转) 作为理工科学生,想必有限元分析.数值计算.三维建模.信号处理.性能分析.仿真分析...这些或多或少与我们常用的软件息息相关,假如有一天你只需要这些大型软件 ...