检测对象的可见性
Unity中最为简单、直接的对象可见性测试则是判断对象何时相对于相机可见。针对包含渲染器组件的任意对象,两个伴随事件OnBecameVisible和OnBecameInvisible将自动被调用,包括MeshRenderer和SkinnedMeshRenderer.当然,空游戏对象并不会被调用,即使此类对象位于相机的视见范围内。从技术上讲,这一类对象并未包含任何可见成分,尽管其中的全部内容均实现了空间定位。此类事件的代码如下:
void OnBecameVisible (){
Debug. Log (“Became Visible”) ;
}
void OnBecameInvisible(){
Debug. Log (“Became Invisible”) ;
}
此处,需要注意OnBecameVisible和OnBecameInvisible事件。首先,这里所讨论的可见性仅表示对象位于相机视锥体内,可被其他较近的对象所遮挡,因而实际不一定可见。其次,事件应用于全部相机,而非某一特定相机。OnBecameVisible 事件调用一次后表明,之前的不可见对象进入了相机(至少一部相机)的视锥体。类似地,OnBecameInvisible事件调用一次后表明, 之前的可见对象当前离开全部相机的视锥体。最后,此类函数还涵盖了场景相机的可见性。这也说明,如果用户利用Scene 选项卡测试游戏,且对象在该选项卡中可见,则该对象即处于可见状态。简而言之,仅当用户行为依赖于场景中的全部可见性(或不可见)时,OnBecameVisible 和OnBecameInvisible方法将十分有用。其中,可见性仅对应于视锥体的呈现效果。换而言之,此类事件可用于对相关行为进行