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.

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值