博主近来开始学习Unity 打算做一些笔记来督促自己学习,希望这样能改一改自己拖延以及坚持不久的坏毛病……
这些笔记里主要会写一些博主学习时遇到的一些疑惑的地方,可能会有一些很弱智的,也可能是比较有用的。由于博主刚刚开始学习Unity,所以很可能在文章中间有一些说错的地方,希望观众同学们及时帮忙指出,lz也会及时订正。共同进步……
以下开始是正文:
在官方教程Roll-a-ball tutorial中的 COLLECTING THE PICK UP OBJECTS (http://unity3d.com/cn/learn/tutorials/projects/roll-a-ball/collecting-pick-up-objects?playlist=17141)中。添加了所有的“得分标记“之后,视频中提到了一点:
“Unity为了优化性能,会计算场景(scene)内所有静态碰撞体(static collider)的体积,并保存到缓存中。这样对于那些不会移动的物体来说,便可以节约计算的资源。如果使静态碰撞体发生移动,旋转或缩放,则这个缓存会被重新计算生成,而这将会耗费一定的资源”。
因此,对于经常发生变换的物体,应该将其设定为动态碰撞体(dynamic collider),这样的话,它们的变换将不会导致缓存在每一帧都被刷新,可以做到节约资源的目的。
同时视频中也提到:
“(默认情况下)拥有一个刚体属性(rigidbody)的碰撞体即为一个动态碰撞体,而没有刚体属性的碰撞体则为一个静态碰撞体”。所以对于一些在场景内经常发生变化的物体(比如悬浮在空中旋转的金币等),需要为其赋予一个刚体属性,这样的话便可以在一定程度上节约计算资源。
当然,如果作为了刚体,则会受到重力的影响自动下沉。然而像漂浮旋转的金币这样的东西多半需要设置为一个触发器,所以不会受到碰撞体积的影响,而会穿过地面,直接掉下去。因此可以在刚体属性的选项里面取消勾选“Use Gravity”选项,这样就不会受到重力的影响。不过有些时候,可能需要忽略的不止是重力。所以可能更好的方法是勾选“Is Kinematic”选项,这样的话这个刚体就不会受到任何力的影响,而只会通过transform进行变换。