10

UGUI研究院之自动触发UI的消息事件(二十)

 3 years ago
source link: https://www.xuanyusong.com/archives/3760
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

UGUI研究院之自动触发UI的消息事件(二十)

雨松MOMO 【UGUI研究院】 围观4426816 条评论 编辑日期:2016-05-03 字体:

Unity新的消息系统已经完全取代了之前的sendMessage。总体来说这玩意没什么大用,因为C#的 代理事件委托完全能更好的替代他。只是UGUI中大量的在使用新的消息系统。运行时怎么给UI添加事件,大家可以看我之前的文章 UGUI研究院之控件以及按钮的监听事件系统(五)

如下图所示,这里我就先不考虑运行时添加,在编辑模式下给Image添加一个EventTrigger的脚本。然后在下面就可以选择事件类型了,这里我选择Pointer Click 也就是对点击它进行监听。

UGUI研究院之自动触发UI的消息事件(二十) - 雨松MOMO程序研究院 - 1

Button 会自动带Click这个脚本。 Text的话和Image一样加EventTrigger组件即可。

正常情况下,我得用手点击它才会进入我的监听方法。假如我不想点击触发,我就想在某个时间点自动触发怎么办? 其实还有个方法就是自己去调用点击监听的方法,但是有个问题,比如按钮点击的时候自身会按下 抬起 会有颜色的变化。还有就是如果 多个按钮 监听方法写了多个方法里 也就不好调用了。

下面直接上代码。

using UnityEngine;
using UnityEditor;
using System;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class MyScript : MonoBehaviour
public Button uiButton;
public Image uiImage;
public void Click(GameObject go)
Debug.Log(go.name);
void OnGUI()
if(GUILayout.Button("Auto Button"))
ExecuteEvents.Execute<IPointerClickHandler>(uiButton.gameObject, new PointerEventData(EventSystem.current), ExecuteEvents.pointerClickHandler);
ExecuteEvents.Execute<ISubmitHandler>(uiButton.gameObject, new PointerEventData(EventSystem.current), ExecuteEvents.submitHandler);
if(GUILayout.Button("Auto Image"))
ExecuteEvents.Execute<IPointerClickHandler>(uiImage.gameObject, new PointerEventData(EventSystem.current), ExecuteEvents.pointerClickHandler);

Handler大家可以去这里查 http://docs.unity3d.com/Manual/SupportedEvents.html

作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!

Recommend

  • 9

    2018-03-03 • UGUI中几种不规则按钮的实现方式 UGUI中的按钮默认是矩形的,若要实现非矩形按钮该怎么做呢?比如这样的按钮:

  • 8

    UGUI研究院之UI粒子特效自适应缩放(二十二) 雨松MOMO

  • 8

    【Android】长按连续触发事件的实现方法 项目中需要实现一个类似购物车数量的小组件,需要单击时增加数量,长按时可以连续增大,之前的代码实现效果不理想,google后得到一个解决方法,测试可...

  • 3
    • zhiqiang.org 3 years ago
    • Cache

    触发主权 CDS 的信用事件

    对于由 ISDA 定义的标准 CDS ,有几类触发 CDS 的信用事件: 没有履行支付义务 拒绝或延期支付义务 构成违约的债务重组 但 CDS 合约中并不一定包含上述所有事项。比如一个主权没有「破产」的概念(没有主权破产法...

  • 3

    by zhangxinxu from https://www.zhangxinxu.com/wordpress/?p=9949 本文欢迎分享与聚合,全文转载就不必了,尊重版权,圈子就这么大,若急用可...

  • 4

    Chrome 89 更新事件触发顺序,导致99%的文章都错了(包括MDN)大家好,我是秋风。嗯...我又来了,这次又是在...楠溪和的讨论中产生的问题。那事情是怎么样的呢?最近...

  • 1

    用Shader做UGUI字体描边的算法改进 Unity自带的Outline效率实在太差。找了一篇文章《基于Shader实现的UGUI描边解决方案》,效果还不错,Overdraw和顶点数都不高。这篇文...

  • 3
    • www.cnblogs.com 1 year ago
    • Cache

    STM32 + RTThread + UGUI - 浇筑菜鸟

    开发板:STM32F103C8T6 显示器:ST7735S RT-Thread:5.0.0 玩过 GUI 的小伙伴都知道,界面的显示是一个个像素点组合起来的,那么直接构建出来炫酷的 GUI 还是相对比较困难的,所以我们一般都会使用一些 GUI 库来实现,比如 LV...

  • 2

    UGUI的Button(按钮)组件的介绍及使用 1. 什么是UGUI的Button组件? UGUI(Unity GUI)是Unity引擎中的一套用户界面系统,Button(按钮)是其中的一个常用组件。Button组件...

  • 1
    • blog.uwa4d.com 6 months ago
    • Cache

    Unity UGUI开发,0GC更新视图

    Unity UGUI开发,0GC更新视图 【USparkle专栏】如果你深怀绝技,爱“搞点研究”,乐于分享也博采众长,我们期待你的加入,让智慧的火花碰撞交织,让知识的传递...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK