优质中文开源软件代码项目资源技术共享平台
传播开源的理念,推广开源项目
学习是对自己最棒的投资!与君共勉!
云服务器主机测评推荐,开源软件代码项目技术资源共享!

网站首页 > 游戏开发 正文

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

longtao100 2021-09-04 20:46:01 游戏开发 583 ℃ 0 评论

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

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

 

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

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

下面直接上代码。

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
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


Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

请填写验证码
开源分类
最近发表
开源网标签
开源网归档