UNITY在SCENE視窗獲取滑鼠點選事件
阿新 • • 發佈:2019-02-09
Unity在Scene檢視中如何獲取滑鼠事件對一個新手來說是有一定難度的,今天作為一個新手,分享自己做到這一功能的方法(各位如果發現問題歡迎指出)。我通過定義編輯器類,利用方法OnSceneGUI即可實現功能,下面看具體程式碼。
using UnityEngine; using System.Collections; public class Test : MonoBehaviour { }
新建一個Test類,內部不需要有任何多餘方法即可實現功能,主要功能實現在如下程式碼:
1 using UnityEngine; 2 using System.Collections;3 using UnityEditor; 4 [CustomEditor(typeof(Test))] 5 public class Helper : Editor { 6 public GameObject GOTarget; 7 void OnSceneGUI() 8 { 9 GOTarget = GameObject.Find("Capsule"); 10 if (Event.current.type == EventType.mouseDown) 11 { 12 Ray ray = HandleUtility.GUIPointToWorldRay(Event.current.mousePosition);13 RaycastHit hit; 14 if (Physics.Raycast(ray, out hit)) 15 { 16 GameObject obj = (GameObject)GameObject.Instantiate(GOTarget,hit.point,GOTarget.transform.rotation); 17 } 18 } 19 } 20 }
其中,CustomEditor表示自定義編輯器類,Unity API提示:“這是一個編輯器類,如果想使用它你需要把它放到工程目錄下的Assets/Editor資料夾下。編輯器類在UnityEditor名稱空間下。所以當使用C#指令碼時,你需要在指令碼前面加上 "using UnityEditor"引用”
根據需要,我將Test指令碼掛在需要點選的物體,選中Test指令碼所在物體(只有該物體是選中狀態才能夠監測到滑鼠在Scene視窗的點選),在Scene視窗點選一次該物體,就能在點選位置生成一個Capsule.