Unity - Gizmos:スクリプトからGizmosを描画する
Index
OnDrawGizmos、OnDrawGizmosSelected
Gizmos を描画するには、OnDrawGizmos 関数または OnDrawGizmosSelected 関数で実行する必要があります。
関数 | 説明 |
---|---|
OnDrawGizmos | 常に描画したい Gizmos を描画する場合 |
OnDrawGizmosSelected | オブジェクトが選択されている場合に Gizmos を描画する |
Guzmos を描画する関数
DrawCube
Gizmos.DrawCube 関数は中心とサイズを持つキューブを描画します。
public static void DrawCube (Vector3 center, Vector3 size);
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { void OnDrawGizmosSelected() { // Draw a semitransparent blue cube at the transforms position Gizmos.color = new Color(1, 0, 0, 0.5f); Gizmos.DrawCube(transform.position, new Vector3(1, 1, 1)); } }
DrawFrustum
Gizmos.DrawFrustum 関数は角錐を描画します。
//centerは頂点の位置, fovは頂点の角度, maxRangeは離れた平面までの距離, minRangeは近くの平面までの距離, aspectは幅と高さの比 public static void DrawFrustum (Vector3 center, float fov, float maxRange, float minRange, float aspect);
using System.Collections; using System.Collections.Generic; using UnityEngine; public class GizmosTest : MonoBehaviour { void OnDrawGizmosSelected() { Gizmos.color = new Color(1, 0, 0, 0.5f); Gizmos.DrawFrustum(transform.position, 60, 200, 0f, 1.6f); } }
DrawGUITexture
Gizmos.DrawGUITexture 関数では、指定した Textureを表示させることができます。
public static void DrawGUITexture (Rect screenRect, Texture texture, Material mat= null);
using System.Collections; using System.Collections.Generic; using UnityEngine; public class GizmosTest : MonoBehaviour { public Texture myTexture; void OnDrawGizmosSelected() { // Draw a semitransparent blue cube at the transforms position Gizmos.DrawGUITexture(new Rect(10, 10, 20, 20), myTexture); } }
DrawIcon
Gizmos.DrawIcon 関数はアイコンを描画することができます。アイコンに使用したい画像は Assets/Gizmos フォルダに置いておく必要があります。
//第1引数はアイコンの位置, 第2引数はアイコンに使用する画像の名前, 第3引数はスケーリング可能かどうか public static void DrawIcon (Vector3 center, string name, bool allowScaling= true);
※第3引数が true の場合、近づくと拡大、遠ざかると縮小されます。false の場合、アイコンのサイズは変わりません。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class GizmosTest : MonoBehaviour { void OnDrawGizmosSelected() { //第2引数は画像の名前 //第3引数はスケーリング可能かどうか Gizmos.DrawIcon(transform.position, "Chara_solo1", true); } }
DrawLine
Gizmos.DrawLine 関数では、第1引数で指定した位置から第2引数で指定した位置に向かって線分を描画します。
public static void DrawLine (Vector3 from, Vector3 to);
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public Transform target; void OnDrawGizmosSelected() { if (target != null) { // Draws a blue line from this transform to the target Gizmos.color = Color.blue; Gizmos.DrawLine(transform.position, target.position); } } }
DrawMesh
Gizmos.DrawMesh 関数では、メッシュを描画できます。
public static void DrawMesh (Mesh mesh, Vector3 position= Vector3.zero, Quaternion rotation= Quaternion.identity, Vector3 scale= Vector3.one);
※指定したメッシュによって、形が変わります。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class GizmosTest : MonoBehaviour { public Mesh mesh; void OnDrawGizmosSelected() { // Draws a blue line from this transform to the target Gizmos.color = Color.blue; Gizmos.DrawMesh(mesh, transform.position, Quaternion.identity, Vector3.one); } }
DrawRay
Gizmos.DrawRay 関数はレイを描画します。引数は下記の2通りあります。
public static void DrawRay (Ray r); //こちらの場合, from から from + direction に向けてレイを描画する public static void DrawRay (Vector3 from, Vector3 direction);
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { void OnDrawGizmosSelected() { // Draws a 5 unit long red line in front of the object Gizmos.color = Color.red; Vector3 direction = transform.TransformDirection(Vector3.forward) * 5; Gizmos.DrawRay(transform.position, direction); } }
DrawSphere
Gizmos.DrawSphere 関数は球を描画します。引数から球の中心と半径を指定します。
public static void DrawSphere (Vector3 center, float radius);
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { void OnDrawGizmosSelected() { // Draw a yellow sphere at the transform's position Gizmos.color = Color.yellow; Gizmos.DrawSphere(transform.position, 1); } }
DrawWireCube、DrawWireMesh、DrawWireSphere
Wire が含まれている関数は、ワイヤーで形を表します。引数は DrawCube、DrawMesh、DrawSphere と同じです。