2D物体和3D物体的渲染是不一样的 ,3D物体依靠MeshRender,而2D靠的是Canvas统一渲染
判断3D物体
内置的API: OnBecameVisible 当脚本挂载的物体呈现在任何相机时调用一次
OnBecameInvisible 当脚本挂载的物体离开任何相机时调用一次
原理:相机进行渲染物体上的MeshRender,时会被检测,调用;
判断 2DUGUI (需要在Update当中调)
Vector3 pos = Camera.main.WorldToScreenPoint(transform.position); //取得当前UI在屏幕当中的位置
//判断当前的位置 与屏幕坐标的关系
if ((pos.z < 0) || (pos.x < 0) || (pos.x > Screen.width) || (pos.y < 0) || (pos.y > Screen.height))
Debug.Log("消失在屏幕中");
else
Debug.Log("显示在屏幕中");
如有更好的办法,望可以留言讨论。