1. 可视化创建及事件绑定 #

1 : 通过 Hierarchy 面板创建 UI > Button.

2 : 创建一个脚本 TestClick.cs, 定义了一个 Click 的 public 方法(一定要是public的方法).

3 : 把 脚本 TestClick.cs 挂到一个游戏对象或者Button本身上.

4 : 把挂脚本的游戏对象拖到图中Button的画红圈的位置.

5 : 点击图中Button的画蓝圈的位置,选择TestClick脚本,选择Click方法.

运行,点击按钮.

2. 通过直接绑定脚本来绑定事件 #

1 : 建一个ButtonClickTest脚本,挂在一个游戏对象上(里面的方法public或private都可以).

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5.  
  6. public class ButtonClickTest : MonoBehaviour {
  7.  
  8. private GameObject buttonObj;
  9. private void Start()
  10. {
  11. buttonObj = GameObject.Find("Button");
  12. buttonObj.GetComponent<Button>().onClick.AddListener(M);
  13. buttonObj.GetComponent<Button>().onClick.AddListener(F);
  14. }
  15. void M()
  16. {
  17. print("执行了M方法!");
  18. }
  19. public void F()
  20. {
  21. print("执行了N方法!");
  22. }
  23. }

2 : 运行,点击按钮执行两个方法.

  1. buttonObj.GetComponent<Button>().onClick.AddListener(M);可以换成
  1. buttonObj.GetComponent<Button>().onClick.AddListener

     (
          delegate () { M(); }
     );

  1.  

3. 通过 EventTrigger 实现按钮点击事件(一) #

1 : 创建一个ButtonClickTest 脚本, 利用 UnityEngine.EventSystems.EventTrigger 添加监听事件.

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using UnityEngine.EventSystems;
  6.  
  7. // 有了此脚本,就会自动添加 EventTrigger 脚本
  8. [RequireComponent(typeof(UnityEngine.EventSystems.EventTrigger))]
  9. public class ButtonClickTest : MonoBehaviour
  10. {
  11.  
  12. // Use this for initialization
  13. void Start()
  14. {
  15. Button btn = this.GetComponent<Button>();
  16. EventTrigger trigger = btn.gameObject.GetComponent<EventTrigger>();
  17. EventTrigger.Entry entry1 = new EventTrigger.Entry();
  18. EventTrigger.Entry entry2 = new EventTrigger.Entry();
  19. EventTrigger.Entry entry3 = new EventTrigger.Entry();
  20.  
  21. // 鼠标点击事件
  22. entry1.eventID = EventTriggerType.PointerClick;
  23. // 鼠标进入事件
  24. entry2.eventID = EventTriggerType.PointerEnter;
  25. // 鼠标滑出事件
  26. entry3.eventID = EventTriggerType.PointerExit;
  27.  
  28. entry1.callback = new EventTrigger.TriggerEvent();
  29. entry1.callback.AddListener(M);
  30. trigger.triggers.Add(entry1);
  31.  
  32. entry2.callback = new EventTrigger.TriggerEvent();
  33. entry2.callback.AddListener(N);
  34. trigger.triggers.Add(entry2);
  35.  
  36. entry3.callback = new EventTrigger.TriggerEvent();
  37. entry3.callback.AddListener(F);
  38. trigger.triggers.Add(entry3);
  39.  
  40. }
  41. private void M(BaseEventData pointData)
  42. {
  43. Debug.Log("鼠标点击了!");
  44. }
  45. private void N(BaseEventData pointData)
  46. {
  47. Debug.Log("鼠标进入了!");
  48. }
  49. private void F(BaseEventData pointData)
  50. {
  51. Debug.Log("鼠标滑出了!");
  52. }
  53. }

2 :把脚本挂在Button对象上,然后Unity会给Button游戏对象再挂一个EventTrigger脚本.

3 :运行.

4. 通过 EventTrigger 实现按钮点击事件(二) #

1 :写一个脚本挂在一个游戏对象,例如相机上(和按钮关联的事件方法要声明为public).

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using UnityEngine.EventSystems;
  6.  
  7. public class ButtonClickTest : MonoBehaviour
  8. {
  9. // Use this for initialization
  10. void Start()
  11. {
  12. }
  13. public void M()
  14. {
  15. Debug.Log("鼠标点击了!");
  16. }
  17. public void N()
  18. {
  19. Debug.Log("鼠标进入了!");
  20. }
  21. public void F()
  22. {
  23. Debug.Log("鼠标滑出了!");
  24. }
  25. public void K()
  26. {
  27. Debug.Log("鼠标按下了!");
  28. }
  29. public void L()
  30. {
  31. Debug.Log("鼠标抬起了!");
  32. }
  33. }

2 :给Button游戏对象添加EventTrigger组件.

3 :在组件里添加对应的事件,选择对应的方法.

4 :运行,鼠标在按钮上运动,点击.

.

Unity UGUI按钮添加点击事件的更多相关文章

  1. unity的sprite添加点击事件

    直接说方法 添加一个2dxxx的碰撞器 添加一个OnMouseDown的回调函数,这个函数看script reference就可以

  2. 【Unity】用代码给按钮动态添加点击事件

    问题:多数情况下用UGUI的Button控件身上的OnClick()列表可以指明该按钮点击后触发的回调.现在想要调用自定义脚本里的方法,当这个脚本挂在Button所属的Canvas身上时,传入Canv ...

  3. C#给整个panel添加点击事件的方法

    首先要明白两点: panel直接添加点击事件无效 panel添加透明按钮覆盖无法实现 那么方法就是 在panel上添加pictureBox 设置 //充满整个panel pictureBox1.Doc ...

  4. Android 监听按钮的点击事件

    onClick事件1.Button和ImageButton都拥有一个onClick事件 通过自身的.setOnClickListener(OnClickListener)方法添加点击事件2.所有的控件 ...

  5. a标签添加点击事件

      a标签添加点击事件 CreateTime--2017年8月8日09:11:34 Author:Marydon 一.基础用法 方式一:(不推荐使用) <a href="javascr ...

  6. [Swift通天遁地]一、超级工具-(1)动态标签:给UILabel文字中的Flag和url添加点击事件

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  7. (二)AS给button添加点击事件

    三种方法给Button添加点击事件 (一)通过button的id,添加继承View.OnClickListener的监听实现 <Button android:id="@+id/btn_ ...

  8. DevExpress的图形按钮菜单栏控件WindowsUIButtonPanel的布局、使用和设置按钮的点击事件

    场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...

  9. 家庭版记账本app进度之对于按钮的点击事件以及线性布局以及(alertdialog)等相关内容的应用测试

    通过线性布局,制作出连个按钮还有文本输入框以及嘴上放的标题文本进行信息的相关显示,完后最后的信息的输入,之后在屏幕的的下方进行显示 当点击第一个按钮的时候,在下方就会简单的出现你自己刚刚输入的相关信息 ...

随机推荐

  1. android开发 如何通过web服务器访问MYSQL数据库并且使其数据同步到android SQLite数据库?

    通过web服务器访问MYSQL数据库有以下几个过程: 1.在MySql下创建自己的数据库和自己的表单 2.连接数据库. 3.访问数据库 1.创建web工程 (服务器端) 在Myeclipse下新建一个 ...

  2. 清理:db上面的过期的binlog,释放磁盘空间。 (转)

    如果10台以内的db的话,自己手动ssh进去,clean就足以,但是上百台呢,就要写脚本了.大概思路:在 一台db跳转机上面, 写一个脚本,访问slave,远程获取正在复制的master上面的binl ...

  3. C语言中clock函数的使用

    #include<cstdio> #include<cstdlib> #include<ctime> using namespace std; int main() ...

  4. Unreal引擎术语表

    转自:http://www.cnblogs.com/hmxp8/archive/2012/02/10/2345274.html Unreal引擎术语表 转载自UDN: ‍Actor - 一个可以放置在 ...

  5. ssh功能模块——paramiko

    参考官网文档:http://docs.paramiko.org/

  6. Leetcode:9. Palindrome Number

    这题要求不能使用额外的空间,我也就没做,看了下别人的代码,挺有意义的一道题目,出坏了. 解题思路:从右往左颠倒过来,看看这个值和原来的x值是不是一样,最后还要注意像20这种情况,也是的 public ...

  7. 第一周作业-Linux基础入门

    写在前面 实验楼中linux基础入门的内容很多,几乎涵盖了所有的常用命令.命令的记忆不是一朝一夕的,更不能死记硬背,在实践中多操作,熟悉后自然就记住了.我没有将对每个命令操作结果都截图记录下来(事实上 ...

  8. HDU - 5542 The Battle of Chibi(LIS+树状数组优化)

    The Battle of Chibi Cao Cao made up a big army and was going to invade the whole South China. Yu Zho ...

  9. OTRS 二次开发笔记

    公司使用otrs系统处理业务工单,各种事件流.因为是开源免费系统,因此需要在上面做一些功能补充或定制的二次开发. otrs是什么? OTRS 是一个功能强大的工单系统.完美适用于服务台(Help De ...

  10. hdu2874(lca / tarjan离线 + RMQ在线)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2874 题意: 给出 n 个顶点 m 条边的一个森林, 有 k 个形如 x y 的询问, 输出 x, ...