06 2012 档案
摘要:SendMessage的receiver可以是协程。 当receiver拥有参数时,可以直接使用参数的具体类型,而不需要将参数类型定为object,后者会导致强制类型转换。 由于可以存在多个潜在的receiver,因此如果需要在某个receiver中使用SendMessage发送新的消息的话,请至少等待一帧,以保证当前的消息已经被所有的receiver都处理到。
阅读全文
摘要:不要使用OnGUI(),它很慢,非常慢。 当需要频繁修改物体的localScale时,移除其collider组件,否则会非常影响帧率。 使用OnBecameVisible()/OnBecameInvisible()配对使用修改enabled属性,使得只有在对象可见时脚本才会执行。 使用InvokeRepeating()代替Update()处理不需要实时的数据更新。 使用对象池GameObjectPool缓存频繁使用的对象。
阅读全文
摘要:Unity3d中,Object.Destroy()方法会将传入的参数对象销毁,这将导致在此之后所有对该对象的引用都会变成null。然而该方法在调用时并不会立即执行,在每一帧中,所有对Destroy()方法的调用都会延迟至当前帧的所有Update()调用结束后(真正rendering之前)统一执行。这相应产生的一个结果就是:在调用Destroy()后的同一个方法内,该对象仍然是可用的,对该对象的判空测试都返回true通过。 另外,如果调用Destroy()时传入了延迟时间的参数,则Destroy()将在延迟给定的固定时间后才执行。
阅读全文
摘要:利用MonoBehaviour的OnBecameInvisible()方法。 该方法需要被挂接对象拥有renderer组件。如果没有,可以考虑给其加一个挂接一个cube子结节,借用该子结点的renderer触发OnBecameInvisible()方法。为了减少性能损失,还应该做如下处理: 将该子结点除Mesh Render之外的其它所有组件删除; 将renderer中的所有check box都重置; 将localScale的所有数值设置为0,以保证其不可见性; 还可以适当调整localPosition的值,以保证父结点在适当的位置完全不可见后再销毁;
阅读全文

浙公网安备 33010602011771号