Unity开发微信小程序-避开新InputSystem有关坑

cs 复制代码
            _clickAction = new InputAction("Click", InputActionType.Button);
            _clickAction.AddBinding("<Mouse>/leftButton").WithInteraction("press(behavior=1)");
            _clickAction.AddBinding("<Touchscreen>/primaryTouch/press").WithInteraction("press(behavior=1)");
            _clickAction.AddBinding("<Touchscreen>/press").WithInteraction("press(behavior=1)");
            _clickAction.AddBinding("<Pen>/tip").WithInteraction("press(behavior=1)");
            _clickAction.AddBinding("<Pointer>/press").WithInteraction("press(behavior=1)");
            _clickAction.AddBinding("<Touchscreen>/primaryTouch/press").WithInteraction("tap");
            _clickAction.performed += OnClickPerformed;
            _clickAction.Enable();

问题

我一开始想着要覆盖各种平台的各种点击情况,建立了这一套创建新InputSystem的代码。

结果在导出微信小游戏,在屏幕上暴力快速多次点击后,OnClickPerformed不再执行了。

原因

当其中任意一个 binding 的 interaction 卡在 started/inProgress,整个 action 的 performed 都可能被你"等 release"给锁死

解决办法

删除多余的press判断:

cs 复制代码
_clickAction = new InputAction("Click", InputActionType.Button);
            // 一个就够:<Pointer>/press 本身就覆盖 mouse/pen/touch(大多数平台)
            _clickAction.AddBinding("<Pointer>/press").WithInteraction("press"); 
            // 或者显式 behavior=0
            // .WithInteraction("press(behavior=0)");
            _clickAction.performed += OnClickPerformed;
            _clickAction.Enable();

纯属没事找事。

相关推荐
郝学胜-神的一滴21 小时前
罗德里格斯旋转公式(Rodrigues‘ Rotation Formula)完整推导
c++·unity·godot·图形渲染·three.js·unreal
田鸡_1 天前
Unity新输入系统(Input System)教学篇
unity·游戏引擎·游戏程序
EQ-雪梨蛋花汤1 天前
【Unity笔记】Unity 音游模板与免费资源:高效构建节奏游戏开发全指南
笔记·unity·游戏引擎
星辰徐哥1 天前
Unity基础:游戏对象的激活与隐藏:SetActive方法详解
游戏·unity·lucene
微莱羽墨1 天前
零、0基础入门Unity 安装详细教程(2026最新版教程,安装Unity看这一篇就够了!)
unity·游戏引擎·unity安装
星辰徐哥1 天前
Unity C#入门:变量的定义与访问权限(public/private)
unity·c#·lucene
nnsix1 天前
Unity 刚体的 默认力、瞬时力 区别
unity·游戏引擎
nnsix1 天前
Unity Sprite的 Generate Physics Shape 参数解释
unity·游戏引擎
魔士于安1 天前
Unity完整小球迷宫项目
前端·unity·游戏引擎·贴图·模型
め.1 天前
Unity协程的原理
unity·游戏引擎