【Unity Editor拡張】Camera選択時にSceneビューにグリッドを描画する


Sceneビューにグリッドを出したくなったので作りました。

ソースコード

CameraEditor.cs
using UnityEditor;
using UnityEngine;
[CustomEditor(typeof(Camera))]
public class CameraEditor : Editor
{
    void OnSceneGUI()
    {
        //SceneビューのCamera取得
        Camera camera = SceneView.GetAllSceneCameras()[0];

        //グリッド線の中心座標
        Vector3 pos = camera.transform.position;

        //Debug.DrawLine()は原点から離れすぎるとなぜか表示されなくなるので中心を原点に近づける
        pos += camera.transform.forward * pos.magnitude;

        float size = 99999f;
        Debug.DrawLine(pos - camera.transform.right * size, pos + camera.transform.right * size, Color.yellow);
        Debug.DrawLine(pos - camera.transform.up * size,    pos  + camera.transform.up * size, Color.yellow);

        //Sceneビュー更新
        EditorUtility.SetDirty(target);
    }

    //Cameraからフォーカスが外れたときに実行
    void OnDisable()
    {
        //Sceneビュー更新
        EditorUtility.SetDirty(target);
    }
}

参考

UnityのSceneViewにラベルやボタンを表示する - テラシュールブログ
http://tsubakit1.hateblo.jp/entry/2014/07/26/220458

けいごのなんとか - SceneViewクラスについて
http://anchan828.hatenablog.jp/entry/2013/03/13/004726