Unity 2D手游如何检测UI Text被点击/触摸以触发代码执行
问题答复
一、UI Text点击/触摸支持确认
首先明确:Unity内置的UI Text(UGUI的Text组件)原生支持点击、触摸等交互事件检测,不需要额外引入第三方组件,只要满足两个基础条件即可触发交互:
- Text所在的Canvas已经挂载了
Graphic Raycaster组件(默认创建UGUI Canvas时会自动附带该组件,无需手动添加) - Text组件勾选了
Raycast Target选项(默认创建Text时默认勾选,只要没有手动关闭就有效)
二、移动端点击Text触发代码的具体实现方法
无需单独区分PC点击和移动端触摸逻辑,UGUI的事件系统已经自动适配了两种输入模式,直接使用以下两种常用方案即可:
方案1:用Button组件封装(最推荐,新手不易出错)
因为Text本身没有默认的交互反馈,用Button封装Text是Unity官方推荐的UI交互实现方式,步骤如下:
- 右键你创建的Text控件 -> 选择
UI -> Button,会自动给当前Text挂载Button组件 - 把Button组件的
Transition属性修改为None(不需要默认的按钮背景变色效果,只保留点击响应能力) - 新建C#脚本,命名为
MenuController.cs,示例代码如下:
using UnityEngine; public class MenuController : MonoBehaviour { public void OnClickCreateRoom() { // 此处填写点击Create Room后的业务逻辑 Debug.Log("触发创建房间点击"); } public void OnClickJoinRoom() { // 此处填写点击Join Room后的业务逻辑 Debug.Log("触发加入房间点击"); } public void OnClickOptions() { // 此处填写点击Options后的业务逻辑 Debug.Log("触发展开设置点击"); } }
- 把这个脚本挂载到场景中任意持久存在的物体上(例如直接挂到Canvas上即可)
- 回到对应Text的Button组件,找到
On Click ()面板,点击加号,把挂载了MenuController的物体拖入插槽,然后下拉函数列表选择对应的方法即可,例如Create Room对应的Text就选择OnClickCreateRoom - 打包到移动端后会自动适配触摸点击,不需要额外编写触摸判断代码
方案2:直接给Text添加事件触发器(无需Button组件)
如果你不想引入Button组件,也可以直接通过EventTrigger组件监听点击事件:
- 选中对应的Text控件,点击Inspector面板的
Add Component,搜索添加Event Trigger组件 - 点击
Add New Event Type,选择Pointer Click事件 - 后续绑定方法的步骤和方案1的第4、5步完全一致即可
注意:两种方案都不需要单独编写移动端触摸检测代码,UGUI的事件系统会自动将移动端的轻按操作识别为Pointer Click事件,PC端点击和移动端触摸会共用同一套触发逻辑。
内容的提问来源于stack exchange,提问作者Beginner Programmer
相关产品推荐
相关产品推荐

