首页/ 第 8 章 · 输入系统/ 第 123 课
LESSON 123 · 输入系统

UI 按钮点击响应(输入层)

UI 按钮响应已掌握。下一课学自定义按键与键位映射。

⏱ 约 14 分钟📊 难度:入门🗂 第 8 章 · 输入系统📍 第 123 / 300 课
课程进度
123 / 300

🎯本节学习目标

  • 创建 UI 按钮
  • 绑定点击事件
  • 实现界面操作

🚀课程导读

游戏里的“开始游戏”“设置”“继续”按钮,点击后执行逻辑。本课实现 UI 点击响应(UI 系统第 10 章详讲)。

创建 UI 按钮

三步建按钮。

  1. 在 Hierarchy 右键 → UI → Button - TextMeshPro(推荐,中文支持好)。
  2. 会自动创建:Canvas(画布)+ EventSystem(事件系统)+ 按钮子物体(文字)。
  3. 选中按钮,右侧 Inspector 可见:Image(背景)、Button 组件、TextMeshPro(文字)。
  4. 在 Button 组件的【On Click ()】列表下方点【+】添加一个监听项。
  5. 把目标对象拖到“None (Object)”槽,在下拉选“函数”(如 GameObject → SetActive 或脚本方法)。
  6. 这样点击按钮就会调用指定对象的方法。
  7. 修改按钮文字:选中子物体 TextMeshPro,改 Text 内容为“开始游戏”。
💡
EventSystem 是 UI 事件的基础(鼠标点击 UI 都靠它),别删。

代码绑定点击事件

更灵活的方式。

  1. 创建脚本 UIManager:
  2. public void StartGame() { Debug.Log("开始游戏!"); SceneManager.LoadScene("Level1"); }
  3. public void QuitGame() { Debug.Log("退出游戏"); Application.Quit(); }
  4. 【方式1 Inspector 拖】把挂 UIManager 的对象拖到按钮 On Click 槽,函数选 UIManager.StartGame。
  5. 【方式2 代码绑定】在脚本里用 AddListener:
  6. using UnityEngine.UI;
  7. Button startBtn;
  8. void Awake() { startBtn = GameObject.Find("StartButton").GetComponent<Button>(); startBtn.onClick.AddListener(StartGame); }
  9. public void StartGame() { ... }
  10. 【推荐】Inspector 拖拽配置直观;代码绑定灵活(可动态生成按钮)。
  11. 【参数版本】onClick.AddListener(delegate { StartGame(levelName); }); 可传参。
  12. 【注意】按钮被 UI 遮挡时点击无效:检查 Canvas 层级与 Raycast Target。
按钮点击 = Button.onClick + 方法。Inspector 拖或代码 AddListener 二选一。

常见错误与排查

错误:点击按钮没反应?
原因:EventSystem 缺失、按钮被遮挡、或 Canvas 无 Graphic Raycaster
解决:确认场景有 EventSystem;检查 UI 层级与遮挡;确认 Canvas 有 Graphic Raycaster 组件。

动手练习

课后小任务(做出来才算真的学会)

  • 创建“开始游戏”按钮
  • 用 Inspector 拖拽绑定一个方法
  • 用代码 AddListener 绑定一个方法

本节小结

UI 按钮响应已掌握。下一课学自定义按键与键位映射。

完成打卡后,主站会实时更新你的学习进度 🎯

← 上一课输入与动画联动