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」のスクリプトリファレンスは下記にて。
