推薦:將NSDT場(chǎng)景編輯器加入你的3D工具鏈 3D工具集:NSDT簡(jiǎn)石數(shù)字孿生 重要的類 - Gizmos 和 HandlesGizmos 和 Handles 類用于在 Scene 視圖和 Game 視圖繪制線條和形狀以及交互式手柄和控件。這兩個(gè)類共同提供了一種方法來擴(kuò)展這些視圖中顯示的內(nèi)容,并構(gòu)建交互式工具以您喜歡的任何方式編輯項(xiàng)目。例如,您可以在游戲中圍繞非玩家角色創(chuàng)建一個(gè)可拖動(dòng)的圓圈輔助圖標(biāo),代表它可聽到或看到玩家的區(qū)域,而不必在 Inspector 中輸入數(shù)字。 本頁面提供了 Gizmos 和 Handles 類的簡(jiǎn)單概述。有關(guān) Gizmos 和 Handles 類每個(gè)成員的完整文檔和詳盡參考,請(qǐng)參閱 Gizmos 和 Handles 腳本參考頁面。 GizmosGizmos 類允許您將線條、球體、立方體、圖標(biāo)、紋理和網(wǎng)格繪制到 Scene 視圖中,在開發(fā)項(xiàng)目時(shí)用作調(diào)試、設(shè)置的輔助手段或工具。 例如,要在游戲?qū)ο笾車L制一個(gè) 10 個(gè)單位的黃色線框立方體,您可以使用以下代碼: using UnityEngine; public class GizmosExample : MonoBehaviour { void OnDrawGizmosSelected() { // 在變換位置繪制一個(gè)黃色立方體 Gizmos.color = Color.yellow; Gizmos.DrawWireCube(transform.position, new Vector3(10, 10, 10)); } } 這是將立方體放置在一個(gè)方向光游戲?qū)ο笊蠒r(shí)的外觀。 有關(guān)如何使用 Gizmos 的完整文檔,請(qǐng)參閱 Gizmos 腳本參考頁面。 HandlesHandles 類似于 Gizmos,但在交互性和操作方面提供了更多功能。Unity 本身提供的用于在 Scene 視圖中操作項(xiàng)目的 3D 控件是 Gizmos 和 Handles 的組合。內(nèi)置的 Handle GUI 有很多,如通過變換組件定位、縮放和旋轉(zhuǎn)對(duì)象等熟悉的工具。不過,您可以自行定義 Handle GUI,以與自定義組件編輯器結(jié)合使用。此類 GUI 對(duì)于編輯以程序方式生成的場(chǎng)景內(nèi)容、“不可見”項(xiàng)和相關(guān)對(duì)象的組(如路徑點(diǎn)和位置標(biāo)記)非常實(shí)用。 例如,以下是如何創(chuàng)建帶有箭頭手柄的圓弧區(qū)域,用于在 Scene 視圖中修改 “shield area”: using UnityEditor; using UnityEngine; using System.Collections; //項(xiàng)目中應(yīng)已包含了此類 public class WireArcExample : MonoBehaviour { public float shieldArea; } // 使用附加到圓盤的 ScaleValueHandle 創(chuàng)建一個(gè) 180 度的線弧, // 允許您修改 WireArcExample 中的 "shieldArea" 的值 [CustomEditor(typeof(WireArcExample))] public class DrawWireArc : Editor { void OnSceneGUI() { Handles.color = Color.red; WireArcExample myObj = (WireArcExample)target; Handles.DrawWireArc(myObj.transform.position, myObj.transform.up, -myObj.transform.right, 180, myObj.shieldArea); myObj.shieldArea = (float)Handles.ScaleValueHandle(myObj.shieldArea, myObj.transform.position + myObj.transform.forward * myObj.shieldArea, myObj.transform.rotation, 1, Handles.ConeHandleCap, 1); } } 有關(guān)如何使用 Handles 的完整文檔,請(qǐng)參閱 Handles 腳本參考頁面。 |
|