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