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 ...
随机推荐
- 将时间转换为xxx天前 xxx..前
<?php echo (time_fitle('2016-08-17 17:00:00')); function time_fitle($date){ date_default_timezone ...
- servlet中service() 和doGet() 、doPost() 学习笔记
Sevlet接口定义如下: 与Sevlet接口相关的结构图: service() 方法是 Servlet 的核心.每当一个客户请求一个HttpServlet 对象,该对象的service() 方法就要 ...
- ui-grid
html代码: <html ng-app="myApp"> <head> <meta charset="utf- ...
- ActiveMQ简介
ActiveMQ 1.ActiveMQ是什么ActiveMQ是Apache推出的一款开源的完全支持JMS1.1和J2EE1.4规范的JMS Provider实现的消息中间件(Message Orien ...
- CSS 的定位方式和含义
CSS 的定位方式和含义 总结一下 CSS 的定位方式.CSS 的定位 position 是处理页面布局时非常重要的属性. CSS 中有 3 种基本的定位机制:普通流.浮动和绝对定位. 在没有指定的情 ...
- List转换成XML
protected void Button1_Click(object sender, EventArgs e) { var customerlist = CustomerHelper.GetList ...
- kali driftnet
语法 : driftnet [options] [filter code] 主要参数: -b 捕获到新的图片时发出嘟嘟声 -i interface 选择监 ...
- debian bcm43* 无线网卡驱动
deb http://httpredir.debian.org/debian/ jessie main contrib non-free # apt-get update# apt-get insta ...
- PHP $_SERVER详解
$_SERVER['HTTP_ACCEPT_LANGUAGE']//浏览器语言 $_SERVER['REMOTE_ADDR'] //当前用户 IP . $_SERVER['REMOTE_HOST'] ...
- hdu5715 XOR 游戏 [2016百度之星复赛D题]
比赛的时候没仔细想,赛后一想这题其实挺简单的,先求出序列的异或前缀和,然后将异或前缀和建出一颗trie树,然后我们可以二分答案,把问题变成判定性问题,判定是否存在一种方案,使得所有的分组的异或和都大 ...