5 回答

TA貢獻1712條經驗 獲得超3個贊
您可能嘗試導入新的輸入系統包以實現多個輸入設備的兼容性。這些類型的錯誤是由于新舊輸入系統包之間的沖突造成的,并且可能在最新的更新中得到解決。
要解決此問題,請轉到“編輯”?->?“項目設置”?->?“播放器”->?“配置”下的“其他設置”下的“活動輸入處理”選項。選擇兩者。Unity 將重新啟動?,F在你的問題應該解決了。您將能夠同時使用舊的輸入系統包和新的輸入系統包。

TA貢獻1797條經驗 獲得超4個贊
在輸入調試器中檢查是否存在惡意用戶
我有非常相似的癥狀(輸入系統會隨機停止發送回調)。當我打開輸入調試器時,它正在注冊按鍵,但我的腳本中從未調用回調。
重新啟動 Unity 沒有幫助。重新啟動沒有幫助。
我還在輸入調試器中發現輸入系統中有 2 個“用戶”,并且(通過一次禁用場景中一個游戲對象的過程)發現我不小心將輸入動作資源的另一個副本附加到場景中的另一個游戲對象,并且 Unity 將此另一個對象注冊為第二個玩家或“用戶”,它被分配了我試圖捕獲的所有輸入動作綁定。
流氓操作資產本質上是攔截操作,防止在預期腳本上調用回調。我不知道這是否是您的特定問題,但也許它會幫助其他人(像我一樣)花費數小時瀏覽論壇,尋找解決這個難以捉摸的問題的方法。
判斷您是否遇到相同問題的一個簡單方法是打開輸入調試器并查看所需的操作是否實際映射到感興趣的用戶。
輸入調試器的屏幕剪輯:
對我來說,有一個意外的用戶#1,并且只有一個用戶(不是預期的用戶)實際上擁有綁定到所需操作的密鑰

TA貢獻1805條經驗 獲得超9個贊
發布以防其他人遇到這個問題,因為這解決了我的問題。確保調用 Enable() 來啟動路由事件。
//Create a and set the reference
private InputControls _inputMapping;
private void Awake() => _inputMapping = new InputControls();
//Route and Un-route events
private void OnEnable() => _inputMapping.Enable();
private void OnDisable() => _inputMapping.Disable();

TA貢獻1817條經驗 獲得超14個贊
我遇到了類似的問題,完全按照問題中描述的步驟重現。就我而言,我忘記設置控制方案。
添加后問題就解決了。
為此:
打開您的輸入操作資產。
在左上角選擇一個控制方案。(例如,鍵盤)(如果您一開始就沒有添加控制方案,您的問題可能與我的不同)
右鍵單擊> 編輯控制方案。?
單擊加號將控制方案添加到列表中。
選擇您要添加的控制方案。(在本例中為鍵盤)?
你已經準備好了。保存所有內容,問題就應該得到解決。
玩你的游戲,它應該可以工作。

TA貢獻1796條經驗 獲得超7個贊
我不知道這是否對你有用,但它對我有用,而且我也遇到了同樣的問題。
我創建了 2 個控制方案。手機和電腦。移動設備需要觸摸屏,PC 需要鍵盤和鼠標。這樣做使我的移動輸入事件停止觸發。因此,將游戲手柄添加到我的移動控制方案中可以讓事件再次觸發。
太長了。檢查您的控制方案,確保它允許您綁定的輸入。
- 5 回答
- 0 關注
- 205 瀏覽
添加回答
舉報