シーンビューに目印となる線や数字を描いてみる(OnDrawGizmos)|Unityゲーム制作

Unityでシーンビューに目印を描くのを実装してみます。今回はOnDrawGizmosを利用して、「線を引く」のと「数字を書く」のを実装してみます。

はじめに

Unityのバージョンは「2021.3.14f1」で作成しています。

シーンビューに表示されている「カメラマーク」や「TextMeshProマーク」などはGizmoで表示されています。

ゲームビューでもGizmosを有効にすると表示することが出来ます。

詳しくは下記のマニュアルにて。

今回は自分でギズモを作成して、画面に目印を描いてみます。

実装開始

以前、マルバツゲームで下記の画像を利用しました。

まずは「外枠に赤色で線を引く」のを実装してみます。

線を引くスクリプトを作成

下記スクリプトを作成します。OnDrawGizmosで線を引いています。

using UnityEngine;

public class GizmosSample : MonoBehaviour
{

    private void OnDrawGizmos()
    {
        Vector3 pos1 = new Vector3(-3, 3, 0);
        Vector3 pos2 = new Vector3(3, 3, 0);
        Vector3 pos3 = new Vector3(3, -3, 0);
        Vector3 pos4 = new Vector3(-3, -3, 0);

        Gizmos.color = Color.red;
        Gizmos.DrawLine(pos1, pos2);
        Gizmos.DrawLine(pos2, pos3);
        Gizmos.DrawLine(pos3, pos4);
        Gizmos.DrawLine(pos4, pos1);
    }
}

カメラにスクリプトを追加します。

下記のように外枠に赤色の線が出てきます。

「OnDrawGizmos」のスクリプトリファレンスは下記にて。

数字を描くスクリプト

次にマス目に数字を描いてみます。Handles.Labelを利用して数字を任意の位置に表示しています。

using UnityEditor;
using UnityEngine;

public class GizmosSample : MonoBehaviour
{

    [SerializeField] private float OffsetX;
    [SerializeField] private float OffsetY;

    private void OnDrawGizmos()
    {
        Vector3 pos1 = new Vector3(-3, 3, 0);
        Vector3 pos2 = new Vector3(3, 3, 0);
        Vector3 pos3 = new Vector3(3, -3, 0);
        Vector3 pos4 = new Vector3(-3, -3, 0);

        Gizmos.color = Color.red;
        Gizmos.DrawLine(pos1, pos2);
        Gizmos.DrawLine(pos2, pos3);
        Gizmos.DrawLine(pos3, pos4);
        Gizmos.DrawLine(pos4, pos1);

        int num = 0;
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                float x = (j * OffsetX) - OffsetX;
                float y = (-i * OffsetY) + OffsetY;
                Vector3 pos = new Vector3(x, y, 0);

                Handles.Label(pos, num.ToString());
                num++;
            }
        }
    }
}

パラメータをセットします。

下記のようにマス目に数字を描くことが出来ます。

「Handles.Label」のスクリプトリファレンスは下記にて。

タイトルとURLをコピーしました