Gizmoとは?
UnityにはGizmo
という機能があります。
これはSceneView
上で視覚的なデバッグ情報を描画するのに役立つ機能です。
MonoBehaviour
を継承しているコンポーネントで、Gizmos
クラスを使うことで、
独自のギズモを実装し、ラインを引いたりワイヤーフレームを描画したりできます。
Unityのカメラや光源がSceneView
上でアイコンとして表示されているのも、Gizmo
によって描画されています。
Gizmoを実装する
例えば、以下のように記述します。
MonoBehaviour
を継承したコンポーネントクラスに、
OnDrawGizmos
メソッドを追加することで、SceneView
上での描画時に呼ばれるようになります。
通常時
private void OnDrawGizmos()
{
// ギズモの色を設定
Gizmos.color = Color.red;
// ワイヤーフレームの球を描画
Gizmos.DrawWireSphere(transform.position, 1f);
}
この場合SceneView
上で赤いワーヤーフレームの球が表示されることになります。
選択時
OnDrawGizmosSelected
メソッドを追加すると、オブジェクトが選択されている時のみ描画されるギズモを定義できます。
private void OnDrawGizmosSelected()
{
// ギズモの色を設定
Gizmos.color = Color.blue;
// ワイヤーフレームのキューブを描画
Gizmos.DrawWireCube(transform.position, 1f * Vector3.one);
}
この場合は選択されている方のオブジェクトに、青いワイヤーフレームのキューブが表示されるようになります。
Gizmo用メソッド
Gizmos
クラスにはいくつかの形状を描画するためのメソッドが用意されています。
内容 | メソッド |
---|---|
始点と方向から線を描画 | Gizmos.DrawRay(Vector3 from, Vector3 direction) |
ワイヤーフレームの球を描画 | Gizmos.DrawWireSphere(Vector3 center, float radius) |
塗りつぶしの球を描画 | Gizmos.DrawSphere(Vector3 center, float radius) |
ワイヤーフレームの立方体を描画 | Gizmos.DrawWireCube(Vector3 center, Vector3 size) |
塗りつぶしの立方体を描画 | Gizmos.DrawCube(Vector3 center, Vector3 size) |
視錐台(カメラの視野)を描画 | Gizmos.DrawFrustum(Vector3 center, float fov, float maxRange, float minRange, float aspect) |
任意のメッシュを描画 | Gizmos.DrawMesh(Mesh mesh, Vector3 position, Quaternion rotation, Vector3 scale) |
Gizmoを非表示にする
標準で用意されているギズモや自作したギズモを非表示にしたい場合もあると思います。
その際にはSceneView
のツールバー上にギズモ用のメニューがあるので、
一括で非表示にしたり一部だけ費表示することも出来ます。
まとめ
今回はGizmo
について簡単に紹介しました。
これらを組み合わせることで、ゲーム開発を視覚的にサポートする機能を提供できます。
例えば:
- 敵の索敵範囲を
SceneView
上に表示する - 敵がどの対象へ向かっているのかを線で示す
- 向いている方向に
Gizmos.DrawRay
で線を引く - 進入時にイベントが発生するエリアを
Gizmos.DrawCube
で表示する
開発が進むにつれて、画面上の表示物が増え、スクリプトだけでは現在の状態を把握しづらくなる場面もあるかもしれません。
そんなときにGizmo
を活用して、視覚的に状態を確認できるようにしておくと、不具合の発見やバランス調整にも役立ちます。
機会があれば、ぜひ活用してみてください。