UGUI穿透3D世界判断&&UGUI全事件监听
public bool isPointUI(){
PointerEventData eventDataCurrnt = new PointerEventData (EventSystem.current);
eventDataCurrnt .position = new Vector2(Input.mousePosition.x,Input.mousePosition.y);
List<RaycastResult> results= new List<RaycastResult>();
EventSystem.current.RaycastAll(eventDataCurrnt ,results);
return results.Count >=1;//Panel自带一个RaycastResult
}
///监听
using System;
using UnityEngine;
using UnityEngine.EventSystems;
public class EventTriggerListener : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerDownHandler, IPointerUpHandler, IPointerClickHandler
{
public delegate void VoidDelegate(GameObject go);
public VoidDelegate onClick;//点击
public VoidDelegate onDown;//点击按下
public VoidDelegate onUp;//点击抬起
public VoidDelegate onEnter;//进入区域
public VoidDelegate onExit;//离开区域
public static EventTriggerListener Get(GameObject go)
{
if (null == go)
{
Debug.Log(go + "幺幺零 this NULL");
return null;
}
EventTriggerListener listener = go.GetComponent<EventTriggerListener>();
if (listener == null) listener = go.AddComponent<EventTriggerListener>();
return listener;
}
/// <summary>
/// 点击
/// </summary>
/// <param name="eventData"></param>
public void OnPointerClick(PointerEventData eventData)
{
if (onClick != null) onClick(gameObject);
}
public void OnPointerDown(PointerEventData eventData)
{
if (onDown != null) onDown(gameObject);
}
public void OnPointerUp(PointerEventData eventData)
{
if (onUp != null) onUp(gameObject);
}
public void OnPointerEnter(PointerEventData eventData)
{
if (onEnter != null) onEnter(gameObject);
}
public void OnPointerExit(PointerEventData eventData)
{
if (onExit != null) onExit(gameObject);
}
}
public class EventTriggerListenerDarg : MonoBehaviour, IBeginDragHandler, IInitializePotentialDragHandler, IDragHandler, IEndDragHandler, IDropHandler
{
public delegate void VoidDelegate(GameObject go);
public VoidDelegate onBeginDrag;//开始拖动
public VoidDelegate onDrag;//拖动
public VoidDelegate onDrop;//放下
public VoidDelegate onEndDrag;//结束拖动
public VoidDelegate onInitializePotentialDrag;//没拖动
public static EventTriggerListenerDarg Get(GameObject go)
{
if (null == go)
{
Debug.Log(go + "幺幺零 this NULL");
return null;
}
EventTriggerListenerDarg listener = go.GetComponent<EventTriggerListenerDarg>();
if (listener == null) listener = go.AddComponent<EventTriggerListenerDarg>();
return listener;
}
/// <summary>
/// 拖动
/// </summary>
/// <param name="eventData"></param>
public void OnBeginDrag(PointerEventData eventData)
{
if (onBeginDrag != null) onBeginDrag(gameObject);
}
public void OnDrag(PointerEventData eventData)
{
if (onDrag != null) onDrag(gameObject);
}
public void OnDrop(PointerEventData eventData)
{
if (onDrop != null) onDrop(gameObject);
}
public void OnEndDrag(PointerEventData eventData)
{
if (onEndDrag != null) onEndDrag(gameObject);
}
public void OnInitializePotentialDrag(PointerEventData eventData)
{
if (onInitializePotentialDrag != null) onInitializePotentialDrag(gameObject);
}
}
public class EventTriggerListenerSelect : MonoBehaviour, IUpdateSelectedHandler, ISelectHandler, IDeselectHandler
{
public delegate void VoidDelegate(GameObject go);
public VoidDelegate onSelect;//选中
public VoidDelegate onDeselect;//不选中
public VoidDelegate onUpdateSelect;//选中状态
public static EventTriggerListenerSelect Get(GameObject go)
{
if (null == go)
{
Debug.Log(go + "幺幺零 this NULL");
return null;
}
EventTriggerListenerSelect listener = go.GetComponent<EventTriggerListenerSelect>();
if (listener == null) listener = go.AddComponent<EventTriggerListenerSelect>();
return listener;
}
/// <summary>
/// 选中
/// </summary>
/// <param name="eventData"></param>
public void OnSelect(BaseEventData eventData)
{
if (onSelect != null) onSelect(gameObject);
}
public void OnDeselect(BaseEventData eventData)
{
if (onDeselect != null) onDeselect(gameObject);
}
public void OnUpdateSelected(BaseEventData eventData)
{
if (onUpdateSelect != null) onUpdateSelect(gameObject);
}
}
public class EventTriggerListenerScroll : MonoBehaviour, IScrollHandler, IMoveHandler
{
public delegate void VoidDelegate(GameObject go);
public VoidDelegate onMove;//鼠标移动
public VoidDelegate onScroll;//滑动
public static EventTriggerListenerScroll Get(GameObject go)
{
if (null == go)
{
Debug.Log(go + "幺幺零 this NULL");
return null;
}
EventTriggerListenerScroll listener = go.GetComponent<EventTriggerListenerScroll>();
if (listener == null) listener = go.AddComponent<EventTriggerListenerScroll>();
return listener;
}
/// <summary>
/// 滑动
/// </summary>
/// <param name="eventData"></param>
public void OnMove(AxisEventData eventData)
{
if (onMove != null) onMove(gameObject);
}
public void OnScroll(PointerEventData eventData)
{
if (onScroll != null) onScroll(gameObject);
Debug.Log("OnScroll");
}
}
public class EventTriggerListenerCancel : MonoBehaviour, ISubmitHandler, ICancelHandler
{
public delegate void VoidDelegate(GameObject go);
public VoidDelegate onCancel;//取消
public VoidDelegate onSubmit;//确认
public static EventTriggerListenerCancel Get(GameObject go)
{
if (null == go)
{
Debug.Log(go + "幺幺零 this NULL");
return null;
}
EventTriggerListenerCancel listener = go.GetComponent<EventTriggerListenerCancel>();
if (listener == null) listener = go.AddComponent<EventTriggerListenerCancel>();
return listener;
}
/// <summary>
/// 输入
/// </summary>
/// <param name="eventData"></param>
public void OnCancel(BaseEventData eventData)
{
if (onCancel != null) onCancel(gameObject);
}
public void OnSubmit(BaseEventData eventData)
{
if (onSubmit != null) onSubmit(gameObject);
}
}
UGUI穿透3D世界判断&&UGUI全事件监听的更多相关文章
- UI EventSystem事件监听
Unity5.0 EventSystem事件系统的详细说明 一.EventSystem对象的说明 当我们在场景中创建任一UI对象后,Hierarchy面板中都可以看到系统自动创建了对象EventSys ...
- unity实现3D物体上的事件监听处理
想要在3D物体上实现全套事件监听处理: OnMouse系列 OnTrigger系列 OnPointer系列 OnDrag系列 1.在相机中添加Physics Raycaster组件 2.3D物体上 ...
- 事件监听addEventListener()和removeEventListener() ---------1
一直想写一个原生事件监听的记录,方便以后看,不愿意写主要是事件监听的单词太长,记起来好难记每次都要查,这次把知道的写完了,来这里查好了,以后要是理解的更透彻了,就再补全好了 首先,DOM0级事件和DO ...
- WebView使用详解(二)——WebViewClient与常用事件监听
登录|注册 关闭 启舰 当乌龟有了梦想…… 目录视图 摘要视图 订阅 异步赠书:Kotlin领衔10本好书 免费直播:AI时代,机器学习如何入门? 程序员8 ...
- Java中用得比较顺手的事件监听
第一次听说监听是三年前,做一个webGIS的项目,当时对Listener的印象就是个"监视器",监视着界面的一举一动,一有动静就触发对应的响应. 一.概述 通过对界面的某一或某些操 ...
- [No00006A]Js的addEventListener()及attachEvent()区别分析【js中的事件监听】
1.添加时间监听: Chrom中: addEventListener的使用方式: target.addEventListener(type, listener, useCapture); target ...
- java 事件监听 - 控件
java 事件监听 //事件监听 //事件监听,写了一个小案例,点击按钮改变面板的颜色. import java.awt.*; import javax.swing.*; import java.aw ...
- js 事件监听封装
var eventUtil={//添加句柄 //element,节点 //type,事件类型 //handler,函数 addHandler:function(element,type,handler ...
- ExtJs内的datefield控件选择日期过后的事件监听select
[摘要]: 选择时间过后我们为什么需要监听事件?一般有这样一种情况,那就是用于比较两个时间大小或者需要判断在哪个时间点上需要做什么样的操作.基于这样的种种情况,我们很有必要琢磨一下datefield控 ...
随机推荐
- 嵌入式Linux的一点学习心得
Linux本身是一个发展中的操作系统.它有很多前期不完善的机制,被后代用新的机制代替.但是老的机制不可能一下子就消亡,因此由于“历史原因”,会产生很多新旧机制共存的情况.而且Linux的教科书数不胜数 ...
- mongoDb +Java+springboot
前言 :mongoDb 是一种比较常用的非关系数据库,文档数据库, 格式为json ,redis 有五种格式. 1. 项目中要使用,这里简单做个示例.首先是连接mongoDB,用的最多的robomon ...
- Android源码学习
http://android-wheel.googlecode.com/svn/trunk/android-wheel-read-only 在github上面有一个叫做 android-wheel 的 ...
- iOS报错Expected selector for Objective-C method
这个报错非常恶心:原因竟然是在导入头文件的地方多写了一个"+"号,可能问题在一个文件,报错在另一个文件
- 在imge控件中直接显示图片(图片是byte[]格式)
在工作过程中遇到了这个问题,在网上查了一些资料,结合自己的解决方法及解决过程总结了下,方面以后查阅.如果能帮到同样遇到这个问题的你,将非常高兴哦~_~ 由于asp.net中的Image控件是在Syst ...
- c# 网站发布
.net 网站发布简单步骤: 1.选择需要发布的网站,右击->发布 1)配置文件:可以任意新建文件配置名 2)连接: 发布方法选择系统文件:选择目标位置,任意新建一个位置即可. 3)设置:选择D ...
- show_space.sql.txt
create or replace procedure SHOW_SPACE(P_SEGNAME IN VARCHAR2, P_OWNER IN VARCHAR2 DEFAULT USER ...
- C#简单一句代码,实现pictureBox的照片另存为磁盘文件不出错
开发人事档案系统时,一般都要利用pictureBox对人员的照片进行操作,包括选择保存照片.另存照片.删除照片,如下图: 将照片保存到数据库和从数据库中删除,网友写了很多实用代码,非常好用.但是要将p ...
- MySQL where
MySQL where 子句 我们知道从MySQL表中使用SQL SELECT 语句来读取数据. 如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句中. 语法 以下是SQL ...
- jQuery firefox chrome IE 绑定mousewheel事件
$doc.on('mousewheel DOMMouseScroll',function(){ $htmlBody.stop(true); $goTop.stop(true); });