UnityでGameObjectが画面上(カメラ内)に居るのか確認する

はじめに

UnityでGameObjectが画面(カメラ)の外に居るのか中に居るのかを確認したい時がママあります。
例えば、画面に表示された際に処理を行ったり、画面の外に行ったらGameObject自体を破棄したり。
今日はそのやり方の紹介です。

RendererのisVisibleを使う

カメラのviewPortで判断しても良いのですが、RendererのisVisibleを使うと便利です。

以下は、自分自身(GameObject)が画面上に表示されているのかのIsVisibleメソッドの例です。

public class SampleScript : MonoBehaviour {
    private Renderer _Renderer;
    
    void Start () {
        _Renderer = GetComponent<Renderer>();
    }

    void Update() {
        if (IsVisible()) {
            Debug.Lod("表示中");
        } else {
            Debug.Log("非表示中");
        }
    }

    public bool IsVisible() {
        return _Renderer.isVisible;
    }
}

これで、画面上に居るのか確認できます。