您的位置:首页 > 游戏 > 游戏 > 凯里网站建设_网站建设找祥赢_百度打广告怎么收费_网站优化 秦皇岛

凯里网站建设_网站建设找祥赢_百度打广告怎么收费_网站优化 秦皇岛

2025/4/26 1:01:38 来源:https://blog.csdn.net/qq_41140324/article/details/147284865  浏览:    关键词:凯里网站建设_网站建设找祥赢_百度打广告怎么收费_网站优化 秦皇岛
凯里网站建设_网站建设找祥赢_百度打广告怎么收费_网站优化 秦皇岛

【Unity笔记】实现可视化配置的Unity按键输入管理器


适用于角色控制、技能触发的Unity按键输入系统,支持UnityEvent事件绑定、长按/松开监听与启用开关

在这里插入图片描述


一、引言

在 Unity 游戏开发中,处理键盘输入是最常见的交互方式之一。尤其是角色控制、技能释放、菜单快捷键等场景,都离不开灵活的按键监听逻辑。

本篇文章将带你实现一个可在 Inspector 中灵活配置的多键位输入监听组件,支持以下功能:

  • 指定任意多个键位;
  • 分别响应按下(GetKeyDown)、长按(GetKey)、松开(GetKeyUp);
  • 每个键位可单独绑定 UnityEvent;
  • 支持启用/禁用某个键位监听。

二、传统写法的局限性

在常规开发中,我们可能会在 Update() 里直接硬编码:

if (Input.GetKeyDown(KeyCode.Space))
{Jump();
}

这种方式虽然简单,但存在问题:

  • 写死在代码中,修改需重新编译;
  • 难以复用或配置多个按键;
  • 不适合非程序人员调试或修改;
  • 不支持动态启用/禁用;
  • 无法响应长按/松开等复合输入。

三、重构目标

我们期望构建一个可配置、可扩展的键盘输入组件:

功能描述
多按键支持可以配置任意数量的键位
UnityEvent绑定可视化绑定任意响应方法
按键状态识别区分按下、长按、松开
启用控制可随时启用/禁用某个键监听
可视化配置非程序人员也能在Inspector中使用

四、核心结构设计

1. 封装键位与事件的类:KeyEventPair
[System.Serializable]
public class KeyEventPair
{public bool isEnabled = true;public KeyCode key;public UnityEvent onKeyDown;public UnityEvent onKey;public UnityEvent onKeyUp;
}

✅ 使用 [System.Serializable] 使其可以在 Inspector 中显示;
✅ 每种事件都使用 UnityEvent,可视化绑定任意函数。


2. 主逻辑组件 KeyPressHandler
public class KeyPressHandler : MonoBehaviour
{public KeyEventPair[] keyEvents;void Update(){foreach (var keyEvent in keyEvents){if (!keyEvent.isEnabled) continue;if (Input.GetKeyDown(keyEvent.key))keyEvent.onKeyDown?.Invoke();if (Input.GetKey(keyEvent.key))keyEvent.onKey?.Invoke();if (Input.GetKeyUp(keyEvent.key))keyEvent.onKeyUp?.Invoke();}}
}

五、使用方法

步骤 1:添加组件

KeyPressHandler 挂载到任意 GameObject 上(推荐创建一个空的 InputManager 物体)。

步骤 2:配置按键事件

在 Inspector 中点击 + 添加键位,并为每个事件(按下、长按、松开)配置方法。

步骤 3:运行测试

运行场景后,在控制台中观察是否正确响应输入。


六、高级用法扩展建议

  • 🔄 支持动态切换键位绑定(例如根据 UI 设置动态换键);
  • ⏱ 记录长按时长,用于充能技能;
  • ⌨ 支持组合键(Ctrl+X、Shift+Space);
  • 📦 制作成 Unity Package 导入项目复用;
  • 🎮 扩展支持手柄输入(使用 Input System);

七、结语

本文介绍了如何构建一个模块化、可视化、支持多状态的键盘输入监听器,极大提高了按键逻辑的灵活性和可维护性。

该组件适用于:

  • 角色控制
  • 技能释放
  • 快捷键触发
  • 编辑器扩展输入监听
  • 非程序人员可视化配置项目输入逻辑

如果你觉得有帮助,欢迎点赞收藏并分享给同行。如果你希望我进一步封装成 Unity 插件或支持新输入系统,也可以留言交流!


版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com