技術資料:OnDrawGizmosSelected メソッド

概要

OnDrawGizmosSelected は Unity の MonoBehaviour に含まれる特別なメソッドで、シーンビュー内でオブジェクトが選択されているときにのみ Gizmo を描画します。通常、デバッグ用の可視化として使用され、ゲームビューには表示されません。OnDrawGizmosSelected を利用することで、視覚的な混乱を避けつつ、特定のオブジェクトの位置や範囲を把握しやすくなります。

特徴

  • 選択時のみ描画:このメソッドは、対象オブジェクトがシーンビューで選択されているときにのみ呼び出されます。これにより、視覚的な混乱を減らし、必要な情報を選択時にのみ表示できます。
  • シーンビューでのデバッグ向けOnDrawGizmosSelected は、開発中のシーンビューにおいて、オブジェクトの位置や範囲、デバッグ情報などを可視化するために使用します。
  • ゲームビューには表示されないOnDrawGizmosSelected で描画された Gizmo はゲームビューに反映されません。あくまで開発者のための視覚情報です。

基本構文と使い方

以下は OnDrawGizmosSelected の基本的な構文例です。シーンビューでオブジェクトが選択されると、指定した位置に赤いワイヤースフィアが表示されます。

void OnDrawGizmosSelected()
{
    Gizmos.color = Color.red;  // 描画するGizmoの色を設定
    Gizmos.DrawWireSphere(transform.position, 1.0f);  // ワイヤースフィアを描画
}

使用例

例1:オブジェクトの範囲を可視化する

例えば、オブジェクトの範囲を確認したい場合に、ワイヤーフレームで球体や立方体を描画することで、視覚的に把握できます。

void OnDrawGizmosSelected()
{
    Gizmos.color = Color.green;
    Gizmos.DrawWireSphere(transform.position, 2.0f);  // 半径2の緑色ワイヤースフィアを描画
}
例2:敵キャラクターの視野範囲を可視化する

敵キャラクターがプレイヤーを認識できる範囲を視覚化し、シーンビューで確認できるようにする例です。これにより、視野範囲の調整が容易になります。

public float viewRadius = 5.0f;

void OnDrawGizmosSelected()
{
    Gizmos.color = Color.yellow;
    Gizmos.DrawWireSphere(transform.position, viewRadius);  // 視野範囲を表す球体を描画
}

このように viewRadius に視野範囲を代入しておけば、スクリプト内で簡単に変更でき、シーンビューで確認が可能です。

使用時の注意点

  • パフォーマンスOnDrawGizmosSelected は開発時にのみ使用することが推奨され、パフォーマンスにはほとんど影響しませんが、過剰に描画するとシーンビューの操作に支障が出る可能性があります。
  • 表示制限OnDrawGizmosSelected で描画されるのは、シーンビューで選択されているオブジェクトのみです。全てのオブジェクトの範囲を確認する場合は、OnDrawGizmos メソッドを使用するのが適切です。

関連メソッド

  • OnDrawGizmos:選択状態に関係なく常に Gizmo を描画します。全てのオブジェクトを可視化したい場合に便利です。

まとめ

OnDrawGizmosSelected は、特定のオブジェクトがシーンビューで選択されている際にのみ可視化を行うためのメソッドであり、開発段階でのデバッグや範囲確認に非常に役立ちます。特に、デバッグ情報やオブジェクトの影響範囲をシーンビューで効率的に確認できるので、設計段階やスクリプト調整の際に利用すると良いでしょう。

Unity

Posted by hidepon