簡單介紹一下Gizmos,在工程測試、編輯和Debug中用處還是挺多的。
目錄
Gizmos 簡單實用
當我們想在Scene窗口對物體進行標記時,可以選選擇畫一個簡單的圖形
using UnityEngine;
using System.Collections;
public class GizmosTest : MonoBehaviour {
// 選中時繪製一個方塊
void OnDrawGizmosSelected ()
{
Gizmos.DrawCube (transform.position+Vector3.up, Vector3.one);
}
// 繪製一個球
void OnDrawGizmos()
{
Gizmos.color = Color.red;
Gizmos.DrawWireSphere (transform.position, 0.4f);
}
}
非選中效果:
選中效果:
Gizmos高級使用
當我們有一類物體都需要繪製Gizmos,需要表現比較複雜的效果時,可以在Editor文件夾下單獨創建一個腳本
using UnityEngine;
using UnityEditor;
public class GizmosEditor
{
// 畫一個cub線框,選中時爲紅色,補選中時爲綠色
[DrawGizmo (GizmoType.NonSelected | GizmoType.Active)]
static void DrawExampleGizmos (GizmosTest example, GizmoType gizmoType)
{
var transform = example.transform;
Gizmos.color = Color.green;
// new Color32 (145, 244, 139, 210);
//Gizmos選中時爲紅色
if ((gizmoType & GizmoType.Active) == GizmoType.Active)
Gizmos.color = Color.red;
Gizmos.DrawWireCube (transform.position, transform.lossyScale);
}
// 選中物體時畫一個線框球
[DrawGizmo (GizmoType.InSelectionHierarchy)]
static void DrawExampleGizmos2 (GizmosTest example, GizmoType gizmoType)
{
var transform = example.transform;
Gizmos.color = Color.blue;
Gizmos.DrawWireSphere (transform.position, 2);
}
}
顯示效果非選中狀態時:
選中狀態時: