Unity新输入系统移动端PlayerController脚本运行异常问题求助
Unity新输入系统移动端适配解决步骤
- 检查输入动作资产绑定配置
你当前的脚本仅完成了新输入系统的逻辑注册,缺少移动端输入源和动作的绑定操作:
打开你创建的ZombieInputAction输入动作资产,分别给Movement、Jump动作添加对应移动端控制绑定:Movement动作新增绑定,控制路径选择虚拟摇杆(On-Screen Stick) 对应路径,也可根据需求绑定触摸滑动、重力感应等输入源Jump动作新增绑定,控制路径选择虚拟按钮(On-Screen Button) 对应路径
完成配置后勾选输入动作资产右上角的Auto-Save保存设置。
- 场景内添加对应UI控件
在场景激活的Canvas画布下新建两个UI对象,分别挂载On-Screen Stick(用于移动)、On-Screen Button(用于跳跃)组件:- 把
ZombieInputAction资产中对应配置好的Movement、Jump动作分别拖到两个组件的Action字段中 - 调整UI控件的位置、大小适配移动端屏幕显示
- 把
- 检查项目输入配置
打开Edit > Project Settings > Player > Other Settings,找到Active Input Handling选项,确保选择的是Input System Package (New)或者Both,仅选择旧输入系统时新输入系统不会生效。 - 测试排查逻辑问题
你可以先在移动端运行时查看控制台输出:- 如果能正常输出
Movement Values的坐标值、Jump日志,说明输入绑定已生效,你只需要补充把movement.ReadValue<Vector2>()转化为角色位移的逻辑即可 - 如果没有相关日志输出,可在脚本
Awake方法中添加Debug.Log(Touchscreen.current != null ? "触摸设备识别成功" : "未识别到触摸设备");确认移动端触摸输入源是否被正常识别。
- 如果能正常输出
- 常见遗漏项检查
- 确认挂载
PlayerController脚本的对象在场景运行时处于激活状态 - 确认虚拟摇杆、按钮所在的Canvas在移动端运行时处于激活状态,没有被其他UI遮挡
- 确认所有输入动作在
OnEnable中都完成了启用操作,没有漏绑事件。
- 确认挂载
内容的提问来源于stack exchange,提问作者JCRh1n0
相关产品推荐
相关产品推荐

