【Unity】GameViewで画面に分割線を引きたい

ゲームをプレイしながら画面をレイアウトしたい時、N分割の補助線が欲しくなります。

なので作成しました。ソースもご自由にお使いください。

using UnityEngine;

[ExecuteInEditMode]
public class DebugGridLines : MonoBehaviour
{
#if UNITY_EDITOR
    [SerializeField] Color _color = Color.red;
    [SerializeField, Range(1, 8)] int _divides = 4;
    [SerializeField] bool _drawInPlaying = false;

    private void OnDrawGizmos()
    {
        if (!_drawInPlaying) return;
        if (_divides <= 1) return;

        Camera cam = Camera.main;
        if (cam == null) return;

        Gizmos.color = _color;

        // x
        for (int i = 1; i < _divides; ++i)
        {
            var y = i * Screen.height / _divides;
            var a = cam.ScreenToWorldPoint(new Vector3(0, y, 1));
            var b = cam.ScreenToWorldPoint(new Vector3(Screen.width, y, 1));
            Gizmos.DrawLine(a, b);
        }

        // y
        for (int i = 1; i < _divides; ++i)
        {
            var x = i * Screen.width / _divides;
            var a = cam.ScreenToWorldPoint(new Vector3(x, 0, 1));
            var b = cam.ScreenToWorldPoint(new Vector3(x, Screen.height, 1));
            Gizmos.DrawLine(a, b);
        }
    }
#endif
}

アタッチ対象のオブジェクトを制限したくないので、メインカメラを検索して自動で採用するようにしています。

分割数、カラーを変更できます。

実行時にも表示したい場合は、「_drawInPlaying」を有効にしてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA