UnityのGizmosを使ってシーンビューで視覚的なデバッグの補助をする

UnityのGizmosを使うとシーンビューにアイコンやテクスチャ、メッシュ等を表示する事が出来るようになります。

デフォルトでもシーンビューを見るとカメラやライトの表示がされていますよね?

Gizmosを使うとそれを自分で作成する事が出来ます。

通常はシーンビューのみGizmosが有効になっていますが、ゲームビューでもGizmosボタンを押せば有効になります。

ゲームビューでGizmosを表示する

↑のボタンを押すとゲームビューでもGizmosが表示されます。

スポンサーリンク

Gizmosを表示する

シーンビューにGizmosを表示するにはGizmosクラスを使用します。

Gizmosクラスのメソッドを使うとアイコンやテクスチャ、メッシュ等を描画する事が出来るようになります。

Gizmosクラスのメソッドを記述する場所

GizmosクラスのメソッドはMonoBehaviourクラスに定義されている専用のメソッド内に記述します。

OnDrawGismos

OnDrawGismosメソッドはスクリプトをゲームオブジェクトに設定している間呼ばれます。

通常であればこのメソッドを使用しGizmosクラスのメソッドを中に記述します。

OnDrawGizmosSelected

OnDrawGizmosSelectedメソッドはそのゲームオブジェクトがヒエラルキーで選択されている時だけ実行されます。

その為スクリプトが設定されているゲームオブジェクトの選択時だけGizmosを表示したい場合はこちらのメソッドを使用します。

Gizmosの色を変更する

Gizmosの色を変更するにはGizmos.colorプロパティを変更します。

スクリプトで複数のGizmosを表示する時はGizmos表示前に色を変更しておくといいです。

四角柱を表示

四角柱(キューブ)を表示するにはDrawCubeを使います。

第1引数が表示する中心位置で第2引数が四角柱のサイズを指定します。

Gizmos.DrawCubeの表示

四角柱のワイヤーフレームを表示

四角柱をワイヤーフレームだけで表示する事が出来ます。

第1引数が表示する中心位置、第2引数がサイズです。

Gizmos.DrawWireCubeの表示

球を表示

球を表示するにはGizmos.DrawSphereを使用します。

↑の例では最初にGizmosの色を変更しています。

DrawSphereの第1引数は表示する中心位置、第2引数が球の半径になります。

Gizmos.DrawSphereの表示

球のワイヤーフレームを表示

球のワイヤーフレームはGizmos.DrawWireSphereを使用します。

Gizmos.DrawWireSphereの表示

カメラの錐台を表示

カメラの錐台を表示するにはGizmos.DrawFrustumを使用します。

↑の例では最初にGizmosの色を緑色に変更しています。

DrawFrustumの第1引数は位置、第2引数はカメラの視野、第3引数が到達点、第4引数がカメラの位置までの距離、第5引数が幅に対する高さの比率になります。

説明だけだと解り辛いですね・・・・(^_^;)

Gizmos.DrawFrustumの表示

テクスチャを表示

テクスチャを表示するにはGizmos.DrawGUITextureを使用します。

↑の例ではインスペクタでテクスチャを設定出来るようにし、OnDrawGizmosメソッド内でVector2のテクスチャサイズを宣言します。

後でRectのサイズを指定しますが、小数点の値を使うと上手く出来なかった為偶数値を設定するようにしました。

DrawGUITextureの第1引数ではRect型の値を設定します。

これはテクスチャを表示する位置とテクスチャのサイズを指定します。

ここで指定する位置はスクリーンの真ん中からの位置になるようなので、テクスチャのサイズの半分のサイズを移動し中央に表示するようにしています。

Rectの引数はX、Y座標、テクスチャの幅、高さを個別に指定する事も出来ます。

DrawGUITextureの第2引数は表示するテクスチャを指定します。

Gizmos.DrawGUITextureの表示

アイコンを表示する

アイコンを表示するにはGizmos.DrawIconを使用します。

アイコンに使用する画像はAssets/Gizmosフォルダに配置する必要があります。

DrawIconの第1引数が表示位置、第2引数がAssets/Gizmosフォルダに配置した画像ファイル名、第3引数は画面サイズを変えた時にアイコンを拡大・縮小するかどうかになります。

Gizmosアイコンの置き場

↑のようにアイコンに使用するファイルをAssets/Gizmosに置きます。

Gizmos.DrawIconの表示

レイを表示

レイを表示するにはGizmos.DrawLineかGizmos.DrawRayを使用します。

DrawLineは第1引数にレイの開始位置、第2引数にレイの終了位置を指定します。
DrawRayは第1引数にレイの開始位置、第2引数にはレイの方向ベクトルを指定します。

Giozmos.DrawLineとGizmos.DrawRayの表示

メッシュの表示

メッシュの表示をするにはGizmos.DrawMeshを使用します。

インスペクタでメッシュを指定出来るようにしています。

Gizmos.DrawMeshの第1引数はメッシュ、第2引数は表示位置、第3引数は角度、第4引数はメッシュのスケールを指定します。

Gizmos.DrawMeshの表示

メッシュにはStandardAssetsのEthanのBodyのメッシュを指定しました。

黄色いイーサンが表示されていますね(^_^)v

メッシュのワイヤーフレームを表示

メッシュのワイヤーフレームを表示するにはGizmos.DrawWireMeshを使用します。

引数の指定はGizmos.DrawMeshと同じです。

↑の例ではスケールを2倍にしたのでさきほどのイーサンの2倍の大きさになります。

Gizmos.DrawWireMeshの表示

↑のようにワイヤーフレームのイーサンが表示されました。

最後に全部のサンプルを同時に表示した画像を見てみましょう。

Gizmosサンプル全部載せ

表示位置がかなりかぶってるのでわかり辛いですね、いったい何の為に載せたんでしょう・・・・(-_-)

最後のメッシュのイーサンのサイズ感だけわかればよかったかも・・・・。

終わりに

Gizmosを使用するとスクリプトから目印としてアイコンを表示したりする事が出来ます。

その為、敵が巡回する地点をアイコン表示しておき編集時にわかりやすくしたり出来ますね。

それ以外の用途は・・・・うーん、どういう時使えば有効ですかね?(^_^;)

参考サイト

Unityスクリプトリファレンス-Gizmos-

スポンサーリンク

記事をシェアして頂ける方はこちら

フォローして頂くとやる気が出ます