Q&A——物理性能

物理性能

Q1:UWA的报告中指出我们所使用的刚体超出了限制,我们经过测试发现只要使用CharacterController就会产生一个隐藏的刚体。而我们的角色移动是会使用CharacterController的。 为了避免这种情况,我们使用了CapsuleCollider来替代CharacterController接受点击,同时使用设置位置的方法来替代CharacterController的move。

1. 请问这样做是否有风险,并且是否可以降低我们在刚体和物理系统方面的开销呢?

2. 同期我们观测到了一个以前没有关注过的警告。其内容为:
Static Collider.Move (Expensive Delayed cost),请问该报错是否与我们的调整相关?能够导致该警告的原因可能会有哪些呢?

  1. 多数情况下,RigidBody + CapsuleCollider 与 CharacterController 相比会高效一些,因为 move 函数本身会进行较复杂的模拟运算;
  2. Static Collider.Move (Expensive Delayed cost) 意味着场景中有静态碰撞体(不带有RigidBody的Collider)发生了移动,而该操作在Unity 4.x版本的PhysX 中会在后续的模拟中产生较高的开销,但在 5.x 中理论上开销并不明显。如果要消除该问题,只需定位到发生位移的Collider并挂上RigidBody 组件,打开其is kinematic 选项即可。

物理性能

Q2:有时候在Profiler中会碰到Static Collider.Move(Expensive delay cost),有什么办法可以优化掉呢?

一般情况下,尽可能避免在Unity Profiler中出现 Static Collider.Move(Expensive delayed cost)字样。这种字符的出现很可能会导致后续的物理更新出现较大的性能开销,具体体现在Physics.Simulate中。出现这种情况主要是受限于Unity 4.x版本中的PhysX 2.x在移动静态碰撞体是开销较高的问题。因此,我们建议给需要移动的静态Collider加上RigidBody并勾选is Kinematic复选框,从而将其变为动态碰撞体。进行此操作后,该字样将会随之消失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值