所以...据我所知,只要该对象不打算移动,制作任何GameObject Static都是一个好习惯,因此我也认为即使是一个带有刚体的滚石也不应该是一个静态的GameObject。
然而,我被某人评为“团结提示”。当一个物体在它旋转时检查碰撞时,物理计算会突然增加,所以为了获得更好的性能(甚至是少量的),使对撞机保持静止。
我真的没有得到这个想法。 这对任何人都有意义吗?
答案 0 :(得分:1)
静态游戏对象与静态刚体/对撞机不同,它们是两个完全不同的概念。
静态游戏对象用于保存有关渲染,导航网格等的性能时间/内存,您可以在此处阅读:https://docs.unity3d.com/Manual/StaticObjects.html
静态对撞机是一种完全不同的野兽。静态对撞机用于告诉Unity该对象在任何情况下都不会移动,因此它将在物理引擎中保存相当多的计算。
最后,关于你提到的提示:我认为该提示的作者可能正在谈论3D碰撞器,而“静态”他意味着你应该将3D网格与3D对撞机分开,所以当网格时必须旋转,你只旋转而不是对撞机。
想想一个球体,你创建一个父游戏对象,然后是两个孩子:一个有Mesh组件,另一个有Sphere对撞机。当您想要将球体旋转到位时,您只旋转网格物体,而不是旋转对撞机,当您想要翻译球体时,您只需翻译父游戏对象以便更改两个孩子的位置。
答案 1 :(得分:1)
不完全确定评论的内容。它没有意义。此外,看起来您混淆静态对撞机并将GameObject标记为静态。
将编辑器中的对象标记为静态
告诉Unity批量处理它。它用于提高渲染性能。 (这与对撞机无关)
静态对撞机
告诉Unity将不会移动Rigidbody。
根据您的问题,您正在描述静态对撞机。 静态对撞机适用于3D和2D物理系统。
什么是静态对撞机:
静态碰撞器是指游戏对象带有任何类型的碰撞器,但没有 Rigidbody附加到它。
如何创建静态对撞机:
要使GameObject成为静态对撞机,请将对撞机附加到该GameObject,但不要将Rigidbody
附加到该对象上。它现在是一个静态对撞机。
要使其成为非静态对撞机,请将Rigidbody连接到它。
用于:
如果你想要与之发生冲突的很多对象,但你百分之百确定你或玩家不会移动这个对象。
一个很好的例子是砖墙。你只是希望墙壁能够阻止玩家,但你不想移动墙壁。它也可以用于环境中的石头以防止玩家碰撞。想象一下,必须使用对撞机将数百或数千个Rigidbodies附加到每个石头物体上。
它用于提高物理性能。
移动静态对撞机时会发生什么:
唐'吨。当GameObject成为静态对撞机时,预计你永远不会移动它。如果这样做,它会出现尖峰,导致CPU出现峰值。每次尝试移动游戏时,都会在游戏中引入持续冻结。 Unity 5 中的这个峰值已经减少,但它仍然存在。我认为那个评论试图说的是什么。这一切都发生了,因为它必须重新重新计算物理世界。在Unity的网站上,下面是您尝试移动静态对撞机对象时的屏幕截图。