Unity学习小结3 - Unity,你给我的坑

     这个星期我觉得自己几乎不同程度的栽到Unity中那些大大小小的坑中。
     先说说boxcollider:
     我们很容易习惯使用在UISprite组件中勾选ajust boxcollider选项,在添加boxcollider之后勾选可以使碰撞器大小自适应组件的大小。但需要注意的是,如果这个组件是需要大量复制使用的话,在调整完boxcollider尺寸之后就要取消勾选,否则复制的组件boxcollider大小会适应内容,自己修改的大小就会无效!
     关于PlayTween:
     这也是我们很常用的一个动画组件,用它可以管理控制所有Tween关键字打头的动画;但是需要注意的一点,PlayTween属性中的include children慎选,如果当前对象 是所有需处理对象的父对象,则不需要勾选children,所有的孩子也会跟着播放动画。但是一旦勾选,会直接影响孩子结点的Tween动画,即便他们是禁用的。调用father obj的PlayTween,同时child obj的PlayTween也会被调用。
                                                 Unity学习小结3 - Unity,你给我的坑_第1张图片
     对象的激活与隐藏
     Unity对于未激活的对象,逻辑赋值操作会失效。等于你在修改一个active==false的对象的时候,修改它的位置、大小、组件值等等信息,都会失效。这种情况也同样适用于NGUI的各种组建当中。今天才发现被这个问题坑道。不然我们总是会觉得,为什么我明明代码里有写?可是却“没有被执行到”。起始你写的逻辑并没有错,只是需要首先将对相对象激活。如果当前调逻辑的时候对象实在没法激活,那就只好放到对象激活后再做处理。这个问题其实只能算作是一个问题的存档,因为我们也不好查证究竟为什么要在对象未被激活的时候这些逻辑操作会无效,个人也觉得这可能是出于性能的考虑,毕竟对于不被渲染的物体,做的操作和处理无异于是在浪费计算。
     暂时还补充一点,虽然这其实我不够了解C#:
     我以为和C++直接new出来一个对象数组所有对象都定义好了,直接修改元素值即可。谁知道访问元素报空,查了一下才知道原来C#和C++在此处不同,需要用元素的时候需要单独new一个对象出来。o(╯□╰)o

你可能感兴趣的:(动画,unity,bug)