项目地址
https://github.com/jlzzlf/ConfigurableInputSystemTool
项目功能
1.不让业务代码直接去找Action
var move = actions.FindAction("Player/Move");
var jump = actions.FindAction("Player/Jump");
这样会有几个麻烦:
- 路径字符串散落一地,容易写错
- 后面改 Map/Action 名字,很多地方都要跟着改
- 每个脚本都直接依赖 .inputactions 资产,耦合比较重
2.使用ScriptableObject配置输入
在不同的项目中,通过换不同的InputActionAsset和路径来快速配置
3.统一管理ActionMap的启停
提供启动时按配置启动某些Map,例如:打开菜单时只启用UI Map
4.给外部脚本提供更简单的输入接口
值缓存
- Move
- Look
外部脚本直接读属性
事件
- JumpPerformed
- InteractPerformed
外部脚本订阅事件
使用方法
- 将包拖入Unity中。
- 在包管理器中安装InputSystem
- 在Project Settings-Player-Active Input Handing中改为Input System Package或者Both
- 在Input Actions中新建一个Actions(建议),或者在Project窗口中右键新建一个Actions
- 把这个Actions拖入Input Config中,并填写相应内容
- 场景里放一个InputService对象并挂载
- 调用,例:
//角色移动
Vector2 move=InputService.Instance.Move;
//跳跃
private void OnEnable()
{
InputService.Instance.JumpPerformed += OnJump;
}
private void OnDisable()
{
if (InputService.Instance != null)
InputService.Instance.JumpPerformed -= OnJump;
}
private void OnJump()
{
// 跳跃逻辑
}
//打开菜单时切换输入
InputService.Instance.SwitchToOnlyMap("UI");
//关闭菜单时切回
InputService.Instance.SwitchToOnlyMap("Gameplay");
此方案不必生成.inputactions的C# Class
Comments
评论区
欢迎在这里留言交流。