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控 ...
随机推荐
- 通过js子页面回写父页面,改变父页面控件的值
[原]js中实现子页面向父页面中赋值 (方法一) 父页面:<input id="input1" type="text"/><a href=& ...
- GitHub 的分支创建与合并
一个Git仓库可以维护很多开发分支.现在我们来创建一个新的叫"experimental"的分支: $ git branch experimental 如果你运行下面这条命令: $ ...
- What is therelationship between @EJB and ejb-ref/ejb-local-ref?
http://glassfish.java.net/javaee5/ejb/EJB_FAQ.html What is therelationship between @EJB and ejb-ref/ ...
- [置顶] poj1416数字切割解题报告
题意:有一段纸片,就是一个不超过7位数的整数,现在给定你一个目标值 aim ,让你去选择把纸片切成几段,然后这个几段的和值 最接近 aim 且不超过 aim, 分析: 对于这个纸段,比如一个 四位数的 ...
- iOS 如何优雅的处理“回调地狱Callback hell”(一) (下)
了解完流程之后,就可以开始继续研究源码了.在PromiseKit当中,最常用的当属then,thenInBackground,catch,finally - (PMKPromise *(^)(id)) ...
- Java基础知识强化之IO流笔记11:递归之递归概述和注意事项
1. 递归: 方法定义中调用方法本身的现象. e.g: public void show(int n ) { if(n <= 0) { System.exit(0); } System.out. ...
- java多态---内存关系
在该列中,a.lookDoor()会报错,因为azhong没有lookDoor这个方法,同理,a.playGame()也会报错. 注意!!! 最后一句Dog dd=(Dog)a: 这句话非常错误! 在 ...
- Linux FTP YUM源搭建简单记录
1. 挂载iso镜像,进入Packages目录下安装FTP服务 #rpm -ivh vsftpd-3.0.2-10.el7.x86_64.rpm 2. 修改vsftpd配置文件如下 [root@rus ...
- 循序渐近学docker---笔记
1.安装docker 环境:ubuntu 16.04 sudo apt-get install docker.io root@ld-Lenovo-G470:~# docker -vDocker ver ...
- cogs 53 多人背包
/* 要求每个最优 即累加前k优解 注意不用去重 */ #include<iostream> #include<cstdio> #include<cstring> ...