Unity添加触摸控制报错:旧Input类与新输入系统设置冲突
解决Unity旧Input系统代码与输入处理模式冲突的错误
错误原因
你遇到的InvalidOperationException核心问题是:Player Settings里的激活输入处理模式仍设为新Input System,但代码中使用的是旧的UnityEngine.Input类——哪怕你已经从包管理器移除了新Input System包,这个设置不会自动还原,导致两者不匹配触发报错。
解决步骤
- 打开Player Settings:顶部菜单栏点击
Edit→Project Settings,左侧选择Player - 找到
Other Settings板块,定位到Active Input Handling选项 - 将其改为
Input Manager (Old),重启Unity后设置生效
优化触摸输入逻辑(可选)
原代码里Input.touchCount > 0会在触摸持续按住时不断触发,导致角色一直上升,不符合Flappy Bird的操作逻辑,建议改成仅检测触摸开始的状态:
using UnityEngine; public class playerScript : MonoBehaviour { Rigidbody2D rb; void Start() { rb = GetComponent<Rigidbody2D>(); } private void Update() { // 检测鼠标左键点击 或 新触摸开始 if (Input.GetMouseButtonDown(0) || (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)) { rb.velocity = new Vector2(0f, 7f); } } }
内容的提问来源于stack exchange,提问作者user16223274
相关产品推荐
相关产品推荐

