Unity中各类物理投射性能横向比较
最近在优化摄像机部分代码,抽了个时间对物理投射这块进行了系统性的测试,发现了不少东西
测试工程下载地址:
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中各类物理投射性能横向比较的更多相关文章
- 关于Unity中的物理
碰撞器Colliders Unity有两种类型的碰撞体:网格碰撞体(Mesh Colliders)和原始碰撞体(Primitive Colliders). 网格碰撞体组件使用导入的网格数据,可用于环境 ...
- 游戏的物理和数学:Unity中的弹道和移动目标提前量计算
下载地址:https://www.jianguoyun.com/p/DZPN6ocQ2siRBhihnx8 弹道计算是游戏里常见的问题,其中关于击中移动目标的自动计算提前量的话题,看似简单,其实还是挺 ...
- Unity - 2D中的物理关节
本文概述: 分析Unity中几个2D物理关节组件的基本功能.使用方法.运用场景等 开发环境:Unity2019.3.0a2 / VS2017 项目资源包: 2D Joints Starter 说明: ...
- 喵的Unity游戏开发之路 - 推球:游戏中的物理
很多童鞋没有系统的Unity3D游戏开发基础,也不知道从何开始学.为此我们精选了一套国外优秀的Unity3D游戏开发教程,翻译整理后放送给大家,教您从零开始一步一步掌握Unity3D游戏开发. 本文不 ...
- 如何在Unity中创造真实的水
你将要创造什么 Unity是由Unity Technologies开发的多平台游戏引擎,用于为控制台,移动设备,计算机甚至网站等多种设备创建视频游戏和应用程序.Unity的核心优势在于其稳健性,可移植 ...
- 总结使用Unity 3D优化游戏运行性能的经验
原地址:http://www.gameres.com/msg_221889.html 作者:Amir Fasshihi 流畅的游戏玩法来自流畅的帧率,而我们即将推出的动作平台游戏<Shadow ...
- 【Unity技巧】Unity中的优化技术
http://blog.csdn.net/candycat1992/article/details/42127811 写在前面 这一篇是在Digital Tutors的一个系列教程的基础上总结扩展而得 ...
- (转)总结使用Unity 3D优化游戏运行性能的经验
http://www.199it.com/archives/147913.html 流畅的游戏玩法来自流畅的帧率,而我们即将推出的动作平台游戏<Shadow Blade>已经将在标准iPh ...
- [转]总结使用Unity 3D优化游戏运行性能的经验
转载自:http://www.gameres.com/msg_221889.html 作者:Amir Fasshihi 流畅的游戏玩法来自流畅的帧率,而我们即将推出的动作平台游戏<Shadow ...
随机推荐
- MVC 上传 下载
[上传]带进度条 view 注:添加easyui的js文件 <script type="text/javascript"> function fileSelected ...
- wordpres 自定义comment样式
http://wange.im/diy-wordpress-comment-style.html function mytheme_comment($comment, $args, $depth) { ...
- Java web学习filter (1)
一.概念:Filter也称之为过滤器,它是Servlet技术中比较激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源: 例如Jsp, Servlet, 静态图片文件 ...
- [功能改进]Live Writer发博支持“建分类、加标签、写摘要”
以前您在园子里用Windows Live Wirter发布博文是不是有以下三个不爽: 不爽1:如果想在发布随笔时新建分类并将随笔添加至该分类,需要先在博客后台添加分类,然后在Live Writer中刷 ...
- springmvc 动态代理 JDK实现与模拟JDK纯手写实现。
首先明白 动态代理和静态代理的区别: 静态代理:①持有被代理类的引用 ② 代理类一开始就被加载到内存中了(非常重要) 动态代理:JDK中的动态代理中的代理类是动态生成的.并且生成的动态代理类为$Pr ...
- java://Comparator、Comparable的用法(按照要求将map集合的键值对进行顺序输出)
import java.util.*; public class Person implements Comparable<Person>//使Person的属性具有比较性 { priva ...
- 转:linux下jar命令与jar包
原文链接:http://blog.chinaunix.net/uid-692788-id-2681136.htmlJAR包是Java中所特有一种压缩文档,其实大家就可以把它理解为.zip包.当然也是有 ...
- windows---------------windows如何查看哪个应用占用了哪个端口的方法
假如我们需要确定谁占用了我们的80端口在windows命令行窗口下执行:netstat -aon|findstr "80"TCP 127.0.0.1:80 0.0.0.0:0 LI ...
- mac上启动Java项目失败
解决办法参考地址:http://bbs.csdn.net/topics/390813742,感谢csdn账号为iwordword的大神
- Android应用开发中半透明效果实现方案
下面是自定义Activity半透明的效果例子:res/values/styles.xml<resources> <stylename="Transparent " ...