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都可以).

 using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; public class ButtonClickTest : MonoBehaviour { private GameObject buttonObj;
private void Start()
{
buttonObj = GameObject.Find("Button");
buttonObj.GetComponent<Button>().onClick.AddListener(M);
buttonObj.GetComponent<Button>().onClick.AddListener(F);
}
void M()
{
print("执行了M方法!");
}
public void F()
{
print("执行了N方法!");
}
}

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

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

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

 

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

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

 using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems; // 有了此脚本,就会自动添加 EventTrigger 脚本
[RequireComponent(typeof(UnityEngine.EventSystems.EventTrigger))]
public class ButtonClickTest : MonoBehaviour
{ // Use this for initialization
void Start()
{
Button btn = this.GetComponent<Button>();
EventTrigger trigger = btn.gameObject.GetComponent<EventTrigger>();
EventTrigger.Entry entry1 = new EventTrigger.Entry();
EventTrigger.Entry entry2 = new EventTrigger.Entry();
EventTrigger.Entry entry3 = new EventTrigger.Entry(); // 鼠标点击事件
entry1.eventID = EventTriggerType.PointerClick;
// 鼠标进入事件
entry2.eventID = EventTriggerType.PointerEnter;
// 鼠标滑出事件
entry3.eventID = EventTriggerType.PointerExit; entry1.callback = new EventTrigger.TriggerEvent();
entry1.callback.AddListener(M);
trigger.triggers.Add(entry1); entry2.callback = new EventTrigger.TriggerEvent();
entry2.callback.AddListener(N);
trigger.triggers.Add(entry2); entry3.callback = new EventTrigger.TriggerEvent();
entry3.callback.AddListener(F);
trigger.triggers.Add(entry3); }
private void M(BaseEventData pointData)
{
Debug.Log("鼠标点击了!");
}
private void N(BaseEventData pointData)
{
Debug.Log("鼠标进入了!");
}
private void F(BaseEventData pointData)
{
Debug.Log("鼠标滑出了!");
}
}

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

3 :运行.

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

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

 using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems; public class ButtonClickTest : MonoBehaviour
{
// Use this for initialization
void Start()
{
}
public void M()
{
Debug.Log("鼠标点击了!");
}
public void N()
{
Debug.Log("鼠标进入了!");
}
public void F()
{
Debug.Log("鼠标滑出了!");
}
public void K()
{
Debug.Log("鼠标按下了!");
}
public void L()
{
Debug.Log("鼠标抬起了!");
}
}

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. bzoj 2648 SJY摆棋子 —— K-D树

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2648 学习资料:https://blog.csdn.net/zhl30041839/arti ...

  2. C# 性能总结

    尽量使用using语句块和finally (实现IDisposable) 尽量使用单个大程序集而不是多个小程序集 (使用NGen.exe) 使用sealed关键字 权衡虚函数 使用弱引用

  3. IIC编程1:i2c-tools使用

    安装: apt-get install libi2c-dev i2c-tools 检测i2c总线数目 用i2cdetect检测有几组i2c总线在系统上: i2cdetect -l 可以看到系统中有9组 ...

  4. JAVA 1.5 局部特性(可变参数/ANNOTATION/并发操作)

    1: 可变参数 可变参数意味着可以对某类型参数进行概括,例如十个INT可以总结为一个INT数组,当然在固定长度情况下用数组是很正常的 这也意味着重点是可变,不定长度的参数 PS1:对于继承和重写我没有 ...

  5. makefile 基础知识

    $@    目标文件名 $< 第一个依赖文件名 $^ 规则所有依赖文件列表 如果不想让执行语句被打印出来,就在语句前面加上@符号 模式规则 %.o:%.c 后缀规则 .c.o 生成单进程的Mak ...

  6. TS学习之类

    定义类 class Person { name: string; //属性 constructor(_name: string) { this.name = _name; } //构造函数 sayHe ...

  7. docker里安装ubuntu

    使用 Ubuntu 官方镜像 Ubuntu 相关的镜像有很多,这里使用 -s 10 参数,只搜索那些被收藏 10 次以上的镜像 $ docker search -s 10 ubuntu NAME DE ...

  8. 软件开发中对MVC的一些理解

    接口隔离 通俗一点讲,接口隔离就是当一个类需要继承另一个类时, 如果被继承的类中有继承的类用不到的方法或者属性时,就不要去实现这个继承.如果真的情非得已必须要继承,那么也需要从被继承的类中再提取出一个 ...

  9. 1. sqlmap超详细笔记+思维导图

    sqlmap思维导图: 基本操作笔记: -u #注入点 -f #指纹判别数据库类型 -b #获取数据库版本信息 -p #指定可测试的参数(?page=1&id=2 -p "page, ...

  10. 免密码ssh2登录

    以下针对的是ssh2,而不是ssh.配置分两部分:一是对登录机的配置,二是对被登录机的配置,其中登录机为客户端,被登录机为服务端,也就是解决客户端到服务端的无密码登录问题.下述涉及到的命令,可以直接拷 ...