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
- 本文固定链接: https://www.xuanyusong.com/archives/3760
- 转载请注明: 雨松MOMO 于 雨松MOMO程序研究院 发表
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!
这个可不可以直接Invoke一个方法就解决了?
直接实现IPointerClickHandler接口是不是好一点
在抬起按钮事件中使用Invoke就可以了啊,虎贲小朋友
首先我问的不是让他延迟!而是出现这种现象!我需要的是把这种延迟去掉。
请问雨松大大,手机上有没有可能ugui的button在点击松开后一段时间后才响应?现在遇到了这个问题!请问这怎么解决?
问下雨松大大,关于UGUI的ScrollView的一个问题:这个ScrollVIew是一个很大的主城,我可以拖动主城浏览整个主城,当我拖到某个位置的时候,我用两个指头进行缩放。但缩放的效果是根据ScrollView里面的content的锚点的位置缩放的。我想要的理想的效果是在两个手指之间的点进行缩放。我尝试把锚点设置为两指之间的位置,缩放的时候会莫名的偏移很多。不知道大大有木有办法。
你所说的锚点是Pivot吗?你在代码里修改这个属性时,需要重新设置下anchorPosition。改变了Pivot,但anchorPosition不变,所以看上去就会偏移
请问怎么模拟鼠标输入呀
可以自己发射一条射线就模拟鼠标了
那可以触发OnMouseDown()事件么
我试了下好像不行呀,我想不点击鼠标就能触发鼠标的点击事件,不知道大神有啥好办法
请问下 ugui图集的纹理格式应该如何指定?
它是按小图的格式来的。。
UGUI自动打包的sprite图集会存在什么地方?现在要做网页版游戏或是移动端自动更新功能,这个图集能控制打包到游戏外手动下载与加载吗?不会只能打到游戏安装包里吧。
您好~大大 我用了ExecuteEvents.Execute()来执行我的click事件,来开启网络,会报错?直接点击执行就不会报错。。这个是为什么呢?点击函数里 执行的是NetworkManager.singleton.StartHost(); 这个。。求大大指点!
这个我就不清楚了。。