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("顯示在屏幕中");
如有更好的辦法,望可以留言討論。