Unity新Input System下Survival Pro背包移动端触屏拖拽失效求助
Survival Pro Controls 移动端触屏背包拖拽失效修复
我做过这套资源的全平台适配,你碰到的是新版Input System下鼠标/触屏输入逻辑不兼容的典型问题,PC端正常移动端失效100%是以下三个配置/代码点的问题,按顺序改就行:
补全Input Action的触屏绑定
这套资源默认的拖拽交互只绑了鼠标输入通道,没有加触屏对应的绑定项,移动端自然触发不了:- 找到背包拖拽逻辑对应的Input Action配置,给负责读取拖拽位置的Pass Through类型节点,追加绑定路径
<Touchscreen>/touch0/position - 给负责触发拖拽开始/结束的Button类型节点,追加绑定路径
<Touchscreen>/touch0/press - 新增的触屏绑定不要额外加Tap、Hold等交互处理器,Press Point阈值保持和原有鼠标绑定完全一致即可。
- 找到背包拖拽逻辑对应的Input Action配置,给负责读取拖拽位置的Pass Through类型节点,追加绑定路径
修改拖拽脚本的指针类型过滤逻辑
资源原生拖拽代码默认只响应鼠标来源的输入事件,触屏触发的Touch事件会被直接拦截跳过:
找到脚本InventoryDragHandler.cs(默认路径在Survival Pro Controls/Scripts/Inventory/UI/目录下),定位到输入判定的代码块,把仅判定鼠标的条件改成兼容触屏:// 原生默认逻辑(仅支持鼠标) if (Pointer.current.press.isPressed && Pointer.current.currentControl is Mouse) // 修改后兼容触屏 if (Pointer.current.press.isPressed && (Pointer.current.currentControl is Mouse || Pointer.current.currentControl is TouchControl))修正UI输入模块配置
检查场景内Canvas上挂载的UI输入模块,必须使用Input System UI Input Module,不能混用旧版的StandaloneInputModule;同时把模块的Pointer Behavior选项从默认的Single Mouse Or Touch改成All Pointers As Is,避免输入模块把触屏事件二次转成鼠标事件,和拖拽逻辑的判定冲突。
测试提示:不要用Unity Remote验证拖拽功能,Remote的输入透传存在事件丢失、坐标偏移问题,直接打Development真机包测,以上三步改完基本都能复现PC端的正常拖拽效果。
内容的提问来源于stack exchange,提问作者Usama Sandhu
相关产品推荐
相关产品推荐

