unity UI事件
由于工作需要到持续按键,所以了解了一下unity UI事件,本文主要转载于http://www.cnblogs.com/zou90512/p/3995932.html?utm_source=tuicool&utm_medium=referral,并对相关问题进行解释。
我们最常用到的就是unity的button组件,其实button组件所响应的事件为unity众多ui事件中的PointerClick事件,unity的ui事件如下图所示:
实现响应事件有以下三种:
(一)在相关UI控件上挂脚本,脚本继承相关事件对应的接口,并在接口函数中完成相应方法的实现即可。
(二)在相关控件上添加EventTrigger组件,点击AddNewEnvetType添加事件类型,即对应的UI事件,然后就可以挂载响应的方法。
(三)便是在程序实现。第一步也需要在相关控件上添加EventTrigger组件,然后添加监听。代码如下
void Start(){var trigger = transform.gameObject.GetComponent<EventTrigger>();if (trigger == null)trigger = transform.gameObject.AddComponent<EventTrigger>();// 实例化delegatestrigger.triggers = new List<EventTrigger.Entry>();// 定义需要绑定的事件类型。并设置回调函数EventTrigger.Entry entry = new EventTrigger.Entry();// 设置 事件类型entry.eventID = EventTriggerType.PointerClick;// 设置回调函数entry.callback = new EventTrigger.TriggerEvent();UnityAction<BaseEventData> callback = new UnityAction<BaseEventData>(OnScriptControll);entry.callback.AddListener(callback);// 添加事件触发记录到GameObject的事件触发组件 trigger.triggers.Add(entry);}
在此理解一下此段代码:我们要添加一个我们想要的事件,就需要对EventTrigger添加内容,添加的内容有两个,一个为事件类型,一个为对应事件实现的函数,或者说方法。
EventTrigger通过Entry类打包了这两个内容,eventID绑定事假类型,callback绑定事件对应的方法。通过unityaction定义相关委托以及绑定的方法,通过添加监听AddListener来实现。
由于在众多图片或者text上实现点击事件是则需要每一个都添加点击事件,比较麻烦,借鉴别人的EventListener来
using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Events;public class UGUIEventListener : EventTrigger {public UnityAction<GameObject> onClick;//可以重载EventTrigger的其他虚方法来实现点击拖动等事件public override void OnPointerClick(PointerEventData eventData){base.OnPointerClick(eventData);if(onClick != null){onClick(gameObject);}}public static UGUIEventListener Get(GameObject go){UGUIEventListener listener = go.GetComponent<UGUIEventListener>();if (!listener)listener = go.AddComponent<UGUIEventListener>();return listener;} }
给text和image添加事件
using UnityEngine; using UnityEngine.UI;public class UGUIButtonClick : MonoBehaviour {public Text textTitle;public Image imageTitle;private void Awake(){UGUIEventListener.Get(textTitle.gameObject).onClick = OnClick;UGUIEventListener.Get(imageTitle.gameObject).onClick = OnClick;}void OnClick(GameObject go){if(go == textTitle.gameObject){Debug.Log("Text clicked");}else if(go == imageTitle.gameObject){Debug.Log("Image clicked");}} }
PS:三维物体实现上述点击事件需要在Main Camera上挂载physics raycaster组件,然后在三维物体上挂载EventTrigger就可以实现相关方法方法
转载于:https://www.cnblogs.com/llstart-new0201/p/7102868.html
unity UI事件相关推荐
- Unity UI架构设计理念
Unity UI架构设计理念 https://www.jianshu.com/p/e64347dff4fe Unity UI架构设计理念 1.以ARPG为例,多个场景会反复出现相同的"UI窗 ...
- 全面理解 Unity UI 系统
原地址:http://www.cnblogs.com/whitecat/p/4159815.html 随着 Unity 4.6 发布,新 UI 系统终于与大家见面了.这篇文章将不会介绍如何使用按钮.滚 ...
- Unity基础笔记(3)—— Unity UI系统
Unity UI系统 一.UI系统介绍 1. Unity2D 和 UI的区别 Unity2D:主要基于 SpriteRenderer 和 2D物理系统等组成. UI:由 Canvas 以及 各种 UI ...
- 2023年Unity UI教程
2023年Unity UI教程 Unity 新 UI 系统 UI 工具包的完整概述 课程英文名:Modern Unity UI with UI Toolkit 此视频教程共10.0小时,中英双语字幕, ...
- Android学习笔记--处理UI事件
Handling UI Events 在Android里, 有不只一种方式可以截获用户与你的应用程序交互的事件. 在你的界面上处理事件时,你需要捕获用户与某个View实例交互时所产生的事件.View类 ...
- UI事件与内容,舞台与演员
UI事件:创建/清除/显示/隐藏/填充内容/位置变化/形态变化/尺寸变化/颜色变化/ 非UI事件:点击/输入/拖动/ 转载于:https://www.cnblogs.com/jcode/p/62469 ...
- UNITY UI字体模糊的原因
UNITY UI字体模糊的原因 根本原因:像素少. 解决办法:字体的 font size将像素设置大些,然后用scale来缩放大小 posted on 2018-06-21 15:11 时空观察者9号 ...
- Blazor UI事件和渲染
目录 介绍 代码 组件渲染 Blazor UI事件 Blazor UI事件模式 总结 附录 介绍 对于刚接触Blazor的程序员来说,最常见的问题之一是UI事件和相关的渲染过程.此类问题每天都会发布在 ...
- unity UI如何开启(显示)或者关闭(隐藏)Panel界面最好?
unity UI如何开启(显示)或者关闭(隐藏)Panel界面,相信大家都是知道的,但是如何做最好呢? 可能大家一般开启/关闭界面的方法就是直接SetActive吧.这样做通常是可以的,简答快速地解决 ...
最新文章
- python真的很厉害吗-python为什么这么牛?Python真有这么好的前景?
- (chap1 网络基础知识)一些概念
- [Linux Mysql] Linux下Mysql的基本操作
- boost::statechart模块无效图表测试
- 木糖醇、可口可乐零度:可怕的传闻
- 算法稳定币项目Basis Cash将于2月7日启动V2迁移计划
- QoS中拥塞避免机制详解——WRED技术详解
- Ghost module
- 未来已来!域乎“区块链+产业应用赋能精英论坛”成功举办
- C盘容量不够,扩容办法
- iVMS-4200 Vs区别_异地恋 VS 网恋,哪个更难坚持到最后?| Newth互动158
- 信任是高效工作的基石,但是得来却非常不易
- latex的段落间距设置
- IntelIj IDEA下同一个包中的类不能互相引用的问题
- 什么是信令?什么是信令网?(转)
- 设置元素旋转中心点(transform-origin)
- E - Mafia CodeForces - 348A (推公式,思维)
- 中字符转换中文乱码的处理方法
- 排序模型进阶-WideDeepWDL模型导出
- uniapp使用地图