热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

实现UGUI事件监听的三种方式_(拖拽、代码、接口)

1、拖拽最简单的方式,在UI组件**OnClick()**拖拽游戏物体~选择方法另一种方式添加EventTrigger组件,选择UI事件,

1、拖拽


  • 最简单的方式 ,在UI组件**On Click()**拖拽游戏物体~选择方法
  • 另一种方式添加Event Trigger组件,选择UI事件,拖拽游戏物体,选择方法

2、代码添加

首先脚本挂在空物体上,代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System;public class UIEvent : MonoBehaviour
{public GameObject btnGo;public GameObject sliderGo;public GameObject dropDownGo;// Start is called before the first frame updatevoid Start(){btnGo.GetComponent<Button>().onClick.AddListener(this.ButtonOnClick);btnGo.GetComponent<Slider>().onValueChanged.AddListener(this.SliderOnClick);btnGo.GetComponent<Dropdown>().onValueChanged.AddListener(this.DropDownOnClick);}void ButtonOnClick(){Debug.Log("ButtonOnClick");}void SliderOnClick(float value){Debug.Log("SliderOnClick");}void DropDownOnClick(Int32 value){Debug.Log("DropDownOnClick");}// Update is called once per framevoid Update(){}
}

然后指定一个Button&#xff0c;点击按钮就会执行代码中方法


3、通过实现接口


这些接口可以通过API~Scripting-Event System-Supported Events来进行查找_仅限于UGUI

有些接口是依赖于其他接口存在的&#xff0c;如果不执行事件函数&#xff0c;可能是没有实现其依赖的接口&#xff0c;如&#xff1a;要想执行IDragHandler接口的事件函数&#xff0c;必须实现IDragHandler接口

1、//进入该区域时调用
IPointerEnterHandler
2、//离开该区域是调用
IPointerExitHandler
3、//按下时调用
IPointerDownHandler
4、//抬起时调用
IPointerUpHandler
5、//按下并抬起时调用&#xff0c;例如按钮的点击
IPointerClickHandler
6、//拖动开始时调用&#xff0c;并且可以取到拖动的方向
IBeginDragHandler
7、//当发生拖动时调用拖动对象
IDragHandler
8、//在拖动完成时调用拖动对象
IEndDragHandler
9、//在拖动完成的对象上调用
IDropHandler
10、//当鼠标滚轮滚动时调用
IScrollHandler
11、//当对象成为选定对象时调用&#xff0c;只针对Selectable起作用
ISelectHandler
12、//取消选择&#xff0c;由于只能选择一个Selectable&#xff0c;当选择新的后&#xff0c;之前的选择就会回调取消选择事件
IDeselectHandler
13、//选择后&#xff0c;可监听上下左右、WSAD方向键。如果访问eventData.moveDir&#xff0c;可以取到具体移动的方向
IMoveHandler
14、//当按下提交按钮时调用
ISubmitHandler
15、//当按下取消按钮时调用
ICancelHandler
16、//在找到拖动目标时调用&#xff0c;可用于初始化值&#xff08;拖动初始化&#xff0c;只表示滑动初始化&#xff0c;无法取到方向&#xff09;
IInitializePotentialDragHandler
17、//选择时连续调用&#xff0c;只针对Selectable起作用
IUpdateSelectedHandler


以下是示例&#xff1a;

对于Image来说是没办法通过前两种方式对事件进行监听的&#xff0c;那么这时候就只有通过接口来实现
先创建一个Image&#xff0c;再添加一个脚本组件

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;public class UIEventManager : MonoBehaviour, IPointerDownHandler
{//实现的接口 鼠标点击Image会触发//要确保Image组件里的Raycast Target被勾选//因为这种方法是通过射线检测来实现的public void OnPointerDown(PointerEventData eventData){Debug.Log("IPointerDownHandler");}
}

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
/** UI必须有继承自Selectable组件的组件*/
public class ImageII : MonoBehaviour,ISelectHandler,IDeselectHandler,IUpdateSelectedHandler
{public void OnSelect(BaseEventData eventData){print("UI被选中了");}public void OnDeselect(BaseEventData eventData){print("UI被结束选中");}public void OnUpdateSelected(BaseEventData eventData){print("选中之后被结束选中之前一直被调用");}
}

附加&#xff1a;UI事件管理


推荐阅读
author-avatar
小秋学长
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有