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网络编程echo多线程服务器
echo_server服务器多线程版本 #include <unistd.h> #include <stdlib.h> #include <stdio.h> #in ...
- SSH动态查询封装接口介绍
SSH动态查询封装接口介绍 1.查询记录总条数 public int count(Class c,Object[][] eq,Object[][] like,String[] group,String ...
- 1002 A + B Problem II [ACM刷题]
这一段时间一直都在刷OJ,这里建一个博客合集,用以记录和分享算法学习的进程. github传送门:https://github.com/haoyuanliu/Online_Judge/tree/mas ...
- Drawer_layout 关闭滑动视图
在android抽屉Drawer_layout开发中,我需要关闭滑动的试图 找到了这个方法 mDrawer_layout.setDrawerLockMode(DrawerLayout.LOCK_MOD ...
- iOS开发之监测网络状态
一.说明 在网络应用中,需要对用户设备的网络状态进行实时监控,有两个目的: (1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能) (2)根据用户的网络状态进行智能处理,节省用户流量,提高用户 ...
- Configuration所有配置简介
// 内存缓存的设置选项 (最大图片宽度,最大图片高度) 默认当前屏幕分辨率 // .memoryCacheExtraOptions(480, 800) // 硬盘缓存的 ...
- [Angular 2] Create a simple search Pipe
This lesson shows you how to create a component and pass its properties as it updates into a Pipe to ...
- Java 7之多线程- Semaphore--转载
Semaphore用于保存当前可用许可的数量.是通过共享锁实现的.根据共享锁的获取原则,Semaphore分为"公平信号量"和"非公平信号量". "公 ...
- How To Cluster Rabbit-MQ--reference
Foreword This explanation of clustering Rabbit-MQ assumes that you’ve had some experience with Rabbi ...
- POJ 2891 扩展欧几里德
这个题乍一看跟剩余定理似的,但是它不满足两两互素的条件,所以不能用剩余定理,也是给了一组同余方程,找出一个X满足这些方程,如果找不到的话就输出-1 因为它不满足互素的条件,所以两个两个的合并,最后合成 ...