Unity 2019常用功能学习:UI事件响应机制

Unity UI的事件响应有两种方式,一种是在编辑器绑定对应事件,一种是完全在脚本中完成。本质上没用区别。

Unity UI事件响应都需要一个【EventSystem】游戏对象,如果场景中没用该游戏对象,则UI无法对事件进行响应。在添加Unity UI的时候,如果场景中没用该游戏对象,会自动添加。

Unity2019学习:常用功能--Unity UI事件响应_事件响应

编辑器设置默认事件响应

无参数

登录后复制

public void OnEvent()    {        Debug.Log("On Event");    }1.2.3.4.

选中按钮,点击【On Click()】标签下的【+】,添加一个点击事件的响应。将带有脚本的游戏对象拖到【On Click()】标签下。选择响应的方法是【UIEventLearn】脚本组件的【OnEvent】方法。

Unity2019学习:常用功能--Unity UI事件响应_UI_02

传参数

如果为方法添加一个参数。

登录后复制

public void OnEvent(string info)    {        Debug.Log("On Event "+info);    }1.2.3.4.

在绑定完响应事件以后,就会有一个输入框提供输入参数。这里的输入框会随参数类型不同而变化。但是最多只能有一个参数。

Unity2019学习:常用功能--Unity UI事件响应_Unity_03

联动参数

部分Unity UI的事件默认包含参数,有些参数可以联动。

登录后复制

public void OnEvent(float info)    {        Debug.Log("On Event "+info);    }1.2.3.4.

选择事件,就会出现2个同名的事件。一个在顶部分割线上的事件是可以联动的事件,另外一个分割线下的是普通事件。

Unity2019学习:常用功能--Unity UI事件响应_Click_04

其他

有些内容,不需要写脚本,默认事件本身能支持,例如游戏对象的名称等的修改,激活和禁用,发送SendMessage等。

Unity2019学习:常用功能--Unity UI事件响应_Unity_05

编辑器设置事件系统响应

选中一个UI游戏对象,添加一个事件触发器组件。点击【Add New Event Type】按钮,添加对应事件。点击【Pointer Click()】标签下的【+】,添加一个点击事件的响应。将带有脚本的游戏对象拖到【Pointer Click()】标签下。选择响应的方法。

Unity2019学习:常用功能--Unity UI事件响应_Unity_06

这种方法不光能用在交互的UI游戏对象上,还可以用在普通的UI游戏对象,如Text文本游戏对象和Image图像游戏对象上,还可用于非UI的一些游戏对象的点击上。

脚本监听默认事件

登录后复制

public Button button;    void Start()    {        button.onClick.AddListener(OnEvent);    }    private void OnEvent()    {        Debug.Log("On Event ");    }1.2.3.4.5.6.7.8.9.

在场景中新建一个空的游戏对象,将脚本拖到空的游戏对象上成为其组件。将一个场景中的Button游戏对象拖到脚本组件上为其赋值。

Unity2019学习:常用功能--Unity UI事件响应_Unity_07

这种方法和在编辑器设置默认事件响应完全一致,只不过是将编辑器中的场景设置搬到了脚本中。下面是箭头函数的写法,脚本绑定到按钮游戏对象本身。

登录后复制

void Start()    {        GetComponent<Button>().onClick.AddListener(() =>        {            Debug.Log("On Clicked");        });    }1.2.3.4.5.6.7.

脚本监听事件系统事件

添加一个IPointerClickHandler接口的继承,并实现接口的方法。(如果要监听其他事件,则需要继承并实现其他事件的接口)注意引用UnityEngine.EventSystems。

登录后复制

using UnityEngine;using UnityEngine.EventSystems;public class UISysEvent : MonoBehaviour, IPointerClickHandler{    public void OnPointerClick(PointerEventData eventData)    {        Debug.Log("On Click");    }}1.2.3.4.5.6.7.8.9.

将脚本拖到UI游戏对象下即可。

Unity2019学习:常用功能--Unity UI事件响应_事件响应_08

这种方法和在编辑器设置事件系统响应本质上一样,只不过是将编辑器中的场景设置搬到了脚本中。这种方法也可以用于非交互的Unity UI甚至是其他一些非UI的游戏对象。

这种方法和在脚本监听默认事件相比,只能将脚本绑定在要监听的游戏对象上,不能像脚本监听默认事件那样,可以把脚本设置在其他游戏对象上。

               



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空