1. 程式人生 > >拓展編輯器(十三)_拓展Scene檢視(輔助元素)

拓展編輯器(十三)_拓展Scene檢視(輔助元素)

拓展Scene檢視:

  Scene檢視承擔著遊戲“第三人稱”觀察的工作。Unity提供了強大的Gizmos工具API,我們可以在Scene檢視中繪製立方體,網格,貼圖,射線和UI等,開發者可以自由地拓展顯示元件。

輔助元素:

  場景在編輯過程中,通常需要一些輔助元素,這樣使用者可以更高效的完成編輯工作。比如,我們在選中Main Camera物件時,程式會給攝像機元件新增一條紅色的輔助線,並且線上段終點處新增一個立方體輔助物件,程式碼如下:

using UnityEngine;

public class 輔助元素 : MonoBehaviour
{

    private void
OnDrawGizmosSelected() { Gizmos.color = Color.red; //畫線 Gizmos.DrawLine(transform.position, Vector3.one); //立方體 Gizmos.DrawCube(Vector3.one, Vector3.one); } }

  Gizmo的繪製原理就是在指令碼中新增OnDrawGizmosSelected(),此方法僅在編輯模式下生效。使用Gizmos.cs工具類,我們可以繪製任意的輔助元素。請注意,這裡拓展的輔助元素只能用來編輯,並不會影響到最終釋出的遊戲。上述程式碼效果如下:

  除此之外,如果希望輔助元素並不依賴選擇物件出現,而是始終都出現在Scene檢視中,可使用方法OnDrawGizmos()繪製元素,程式碼如下:

  

    private void OnDrawGizmos()
    {
        Gizmos.DrawSphere(transform.position, 1);
    }

  效果如下:

  

ps:關於Gizmos工具類

  所有的Gizmos繪製需要在指令碼的OnDrawGizmos或者OnDrawGizmosSelected函式裡完成。其中,OnDrawGizmos會每幀呼叫,所有在OnDrawGizmos渲染的Gizmos都是可見的,而OnDrawGizmosSelected僅在指令碼附加的物體被選擇時呼叫。此外,Gizmos工具類中還有很多常用的繪製元素,讀者也可以自行摸索。