UNITY在SCENE窗口获取鼠标点击事件

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.

你可能感兴趣的:(Unity,unity)