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控 ...
随机推荐
- 获取contenteditable的内容 对html进行处理 兼容 chrome、IE、Firefox
var html = $(this).html();if(html){ var lineSign = html.indexOf('<div>'); if(html.indexOf('< ...
- UVa 496 Simply Subsets (STL&set_intersection)
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=sh ...
- Sublime 注册码
----- BEGIN LICENSE ----- Andrew Weber Single User License EA7E-855605 813A03DD 5E4AD9E6 6C0EEB94 BC ...
- Business Analysis and Essential Competencies
Requirements Classification Schema http://files.cnblogs.com/files/happlyonline/BABOK.pptx http://fil ...
- 你真的理解Java的this和super吗?
你不知道的this 很多介绍java的书籍都说this指该对象本身.我们来看下面代码: class Base{ private int i = 3; public Base() { this.disp ...
- Delphi 2007体验!
Delphi 2007体验! baidu 内容摘要:CodeGear(From Borland) 公司公布了最新的Delphi 2007 For Win32版本号.作为一个 Delphi 的使用者,第 ...
- 统计Oracle数据库文件的大小
1. 统计数据文件.暂时文件.日志文件大小 select sum(bytes)/1024/1024/1024 as GB from dba_data_files; select sum(bytes)/ ...
- 完美解决Android完全退出程序(转)
背景:假说有两个Activity, Activity1和Activity2, 1跳转到2,如果要在2退出程序,一般网上比较常见的说法是用 System.exit(0) 或是 android.os.Pr ...
- linux命令行计算器 <转>
转自 http://blog.chinaunix.net/uid-26959241-id-3207711.html 详细文档请 man bc 在windows下,大家都知道直接运行calc,(c:\w ...
- 001-视频 video
<!DOCTYPE HTML> <html> <body> <video width="320" height="240&quo ...