UNITY之EventTrigger,EventListener
UIEventListener.cs 对一些常用的事件进行了封装和继承。
一,常用事件:
void OnClick ():点击事件;
void OnDoubleClick ():二次或多次点击事件
void OnHover (bool isOver):手指覆盖事件;
void OnPress (bool isPressed):手指点击事件,包含按下、抬起;isPressed为按下,false为抬起;
void OnSelect (bool selected):是否被选择;
void OnDrag (Vector2 delta):手指滑动事件;
void OnKey (KeyCode key):“键”事件;
二,实质:
这些监听事件都是建立在委托事件上:
publicdelegatevoid BoolDelegate (GameObject go, bool state);
public BoolDelegate onPress;
三,前提条件:
UIEventListener的GameObejct包含Colllider;
四,怎使用:
1,静态关联方法:
UIEventListener.Get(GameObject).OnPress += pressList;
2,直接重写:
脚本所在的GameObject包含Colllider,直接重写监听事件:
publicclass SceneTwo : MonoBehaviour {
void OnPress (bool pressed)
{
Debug.Log(“OnPress ”+enabled+“ ”+NGUITools.GetActive(gameObject)+“ ”+pressed);
if (enabled && NGUITools.GetActive(gameObject))
{
}
}
void OnDrag (Vector2 delta)
{
Debug.Log(“OnDrag ”+enabled+“ ”+NGUITools.GetActive(gameObject)+“ ”+delta);
if (enabled && NGUITools.GetActive(gameObject))
{
}
}
}
//Demo1
using UnityEngine;
using System.Collections;
public class EventTriggerTest : MonoBehaviour {
public GameObject button;
// Use this for initialization
void Start () {
UIEventTrigger ue = button.AddComponent <UIEventTrigger> ();
ue.onRelease.Add (new EventDelegate (this, "ReleasedButton"));
ue.onPress.Add (new EventDelegate (this,"PressButton"));
ue.onClick.Add(new EventDelegate(this,"MyClick") );
ue.onPress [0].parameters [0] = new EventDelegate.Parameter ();
ue.onPress [0].parameters [0].obj = button;
ue.onClick [0].parameters [0] = new EventDelegate.Parameter ();
ue.onClick [0].parameters [0].obj = button;
}
// Update is called once per frame
void Update () {
}
void MyClick(GameObject obj){
print (obj.name+" : "+"click");
}
void PressButton(GameObject obj){
print (obj.name+" : "+"pressButton");
}
void ReleasedButton(GameObject obj){
print (obj.name+" : "+"ReleasedButton");
}
}
//Demo2
public class EventListener : MonoBehaviour {
// Use this for initialization
void Start () {
foreach (Transform item in transform ){
UIEventListener.Get (item .gameObject ).onClick = MyClick;
}
}
// Update is called once per frame
void Update () {
}
void MyClick(GameObject obj){
print (obj.name+" : "+"click");
}
}
UNITY之EventTrigger,EventListener相关推荐
- Unity 基于EventTrigger的UI事件系统
一.主要思路 其实主要原理就是通过继承EventTrigger并重写相应的函数实现的,只是对其做了一个封装,更方便使用了: 当对某个GameObject使用UIEventManager.Get()函数 ...
- (四)Trigger
在游戏物体上可以添加Trigger组件,它与unity的eventTrigger类似,但功能更复杂详细. 在游戏物体上田间Trigger,并通过add new event来添加相关功能,如下图所示,添 ...
- 九宫格拼图游戏设计,及代码时序问题解决
目录 1. 需求简述 2. 大方向思路 3. 具体实现思路 4. 问题描述 5. 问题解决 1. 需求简述 需求是一个九宫格拼图的游戏,每两张图都可以随意对换,当拖动图片经过被交换图片时,拖动图片不动 ...
- EasyTouch_Trigger
在游戏物体上可以添加Trigger组件,它与unity的eventTrigger类似,但功能更复杂详细. 在游戏物体上添加Trigger,并通过add new event来添加相关功能,如下图所示,添 ...
- 用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 使用原型链和EventTrigger
原型链是JS的必备,作为ECMAScript4,原型链也是支持的. 特别说明,ActionScript3是支持完整的面向对象继承支持的,原型链只在某些非常特殊的情况下使用. 本文旨在介绍如何使用原型链 ...
- Unity碰撞体不碰撞以及代码添加EventTrigger事件
文章目录 前言 一.同类型物体的碰撞体不发生碰撞 二.代码控制EventTrigger添加事件 总结 前言 本文所记内容有两点: 一.同类型物体的碰撞体不发生碰撞. 二.代码控制EventTrigge ...
- unity | EventTrigger(Button按钮按下、抬起等时执行的方法)
一.常用按钮 按钮组件一般只有当点击时,执行的方法. 点击:需要按下再起来 二.按钮的其他用法 但有时候,我们可能只需要按下的时候执行,或者抬起的时候执行,这时需要在加入按钮组件的时候,再加一个 &l ...
- Unity EventTrigger
一.相关知识 查看Button的源代码可以发现,就只有onClick而已,如果想要添加其它事件就必须使用EventSystem.EventTrigger和delegate(代理) EventTrigg ...
- 【Unity实用小知识点】实现按钮长按功能(用EventTrigger实现)
在一些游戏中可能需要一些按钮长按的功能,但在EventTrigger找了找貌似没有代表长按的功能.感觉EventTrigger通过Down和Up可以实现,就尝试了下. 长按简单小例子 实现点击和长按并 ...
最新文章
- Python爬虫之诗歌接龙
- 2018年3月29日笔记
- 华为云计算——FusionCompute创建虚拟机
- 用c语言实现蚂蚁算法,rsa算法的c语言实现
- oracle job 定时执行参数
- java终结方法_Java终结任务:Callable和Future
- 压测学习总结(7)——Jmeter性能测试之脚本增强
- AVL树(Java实现)
- 怎么删除计算机c盘应用,C盘垃圾文件怎么删除,清理系统盘的电脑软件-腾讯电脑管家...
- C语言 PTA 新年倒计时
- android qq协议分析工具,分析Androidqq协议之收到qq群消息
- 模拟鼠标键盘操作,含硬件模拟技术。
- AI芯片:寒武纪ShiDianNao结构分析
- txt文件更改成java文件
- 未来五年 LED智慧透明屏未来3大发展趋势
- 认识LTE(七):LTE中的两种无反馈模式:发射分集(TM2)和开环空分复用(TM3)
- 谁是远程界的天花板?2023年5款最常用的远程软件横测:ToDesk、向日葵、TeamViewer、Splashtop、AnyDesk
- NodeJS 与第三方模块 mysql(基本操作)
- 计算机毕业设计ssm车辆违规信息管理系统
- RPG Maker XP游戏制作方法(七)