因此,我一直在修補 Unity 輸入系統(您作為包安裝的系統),嘗試創建一個簡單的移動腳本,但立即遇到了問題。我這樣做的方法是創建一個 Value 型別的動作,然后將 WASD 系結到一個 2D Composite,然后在播放器腳本中創建一個呼叫“Movement”函式的 Unity 事件。
public void Movement (InputAction.CallbackContext context)
{
Debug.Log("!!!!!!");
Vector2 moveVal = context.ReadValue<Vector2>();
playerContainer.transform.Translate(new Vector3(moveVal.X, moveVal.Y, 0) * moveSpeed * Time.deltaTime);
}
無論如何,到目前為止一切正常:函式被呼叫,按鈕按下被注冊,但每當我按下它們時,它都會拋出兩個例外。“InvalidOperationException:無法從復合‘UnityEngine.InputSystem.Compposites.Vector2Composite’中讀取‘Vector2’型別的值”和“執行‘執行’回呼時的InvalidOperationException”。
問題似乎是這一行:
Vector2 moveVal = context.ReadValue<Vector2>();
但問題是,那里的每個教程和解決方案都使用相同的代碼,所以它應該可以正常作業,我猜?是什么導致了我的問題?
uj5u.com熱心網友回復:
[免責宣告,這不是答案,但我需要包含圖片/代碼]
一切看起來都不錯,所以我猜錯誤出在 Input Actions 控制元件中。與此示例相比,您有什么不同之處嗎?

要使用上面的輸入操作,我使用如下代碼:
public class PlayWithCube : MonoBehaviour
{
NewControls newControls;
private void Awake()
{
newControls = new NewControls();
newControls.Game.Movement.performed = Movement_performed;
}
private void Movement_performed(UnityEngine.InputSystem.InputAction.CallbackContext obj)
{
var v = obj.ReadValue<Vector2>();
Debug.Log(v);
}
private void OnEnable()
{
newControls.Enable();
}
private void OnDisable()
{
newControls.Disable();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/316218.html
