Unityの新しい入力システムInputSystem

1. 古い入力マネージャー

Unity では、古い入力マネージャー (InputSystemOld) がデフォルトで使用されます

ここに画像の説明を挿入します

スクリプトでは、Input クラスを使用してユーザーの入力操作を取得し、モバイル デバイスのマルチタッチまたは加速度センシング データにアクセスできます。Input クラスは、入力マネージャーに設定されたキーを読み取り、ユーザーの入力を監視できます。アップデート機能。

1.仮想軸

仮想軸の関連設定はプロジェクト設定で確認できます。

ここに画像の説明を挿入します

たとえば、入力マネージャーでは、対応するキーを確認できます。

Horizo​​ntal を例に挙げると、監視されるのはキーボードの AD と左右の矢印です。

float value=Input.GetAxis ("Horzizontal");平滑化フィルターを使用した仮想軸の値。押さない状態を0、プラス方向を1、マイナス方向を-1とし、押すと0から1または-1へと徐々に変化し、変化過程は感度によって決まります。

float value=Input.GetAxisRaw ("Horzizontal");//平滑化フィルターを使用しない仮想軸の値。(値1、0、-1)

たとえば、AD を使用してキャラクターの左右の動きを制御します。

private CharacterController characterController;//使用CharacterController组件控制物体
private void Start()
{
    
    
    characterController = GetComponent<CharacterController>();//得到自身的CharacterController组件
}
private void Update() 
{
    
    
    float tmp_CurrentSpeed = 1.7f;//速度
    float tmp_Horizontal = Input.GetAxis("Horizontal");//按下AD返回一个1~-1随时间过渡的float值
    Vector3 movementDirection = characterTransform.TransformDirection(new Vector3(tmp_Horizontal,0,0));//移动的方向,参数为x,z,y
    characterController.Move(tmp_CurrentSpeed * Time.deltaTime * movementDirection);//控制物体移动
}

2. キーボード入力を取得する

ジャンプモニターのキーボードスペース
ここに画像の説明を挿入します

bool result=Input.GetButton(“Jump”); //対応するボタンが入力されたか監視

bool result=Input.GetButtonDown(“Jump”); //対応するボタンが全押しされているかを監視

bool result=Input.GetButtonUp(“Jump”); 対応するボタンが離されたかどうかを監視します

たとえば、キャラクターのジャンプを制御する場合

private CharacterController characterController;//使用CharacterController组件控制物体
private void Start()
{
    
    
    characterController = GetComponent<CharacterController>();//得到自身的CharacterController组件
}
private void Update() 
{
    
    
    float tmp_CurrentSpeed = 1.7f;//速度
    float tmp_JumpHeight = 3.0f;//跳跃高度
    float tmp_Horizontal = Input.GetAxis("Horizontal");//按下AD返回一个1~-1随时间过渡的float值
    Vector3 movementDirection = characterTransform.TransformDirection(new Vector3(tmp_Horizontal,0,0));//移动的方向,参数为x,z,y
    if(Input.GetButtonDown("Jump"))//当按下空格后
    {
    
    
        movementDirection.y = tmp_JumpHeight;
    }
    characterController.Move(tmp_CurrentSpeed * Time.deltaTime * movementDirection);//控制物体移动
}

3. マウス入力を取得する

bool result=Input.GetMouseButton(0);//マウスの左ボタンを押したとき

bool result=Input.GetMouseButtonDown(1);//マウスの右ボタンが押されたとき

bool result=Input.GetMouseButtonUp(2);//マウスが中央ボタンを持ち上げたとき

2. 新しい入力システムパッケージ

1. ご使用の前に

: 新しい入力システムには、Unity 2019.4+ および .NET 4 ランタイムが必要です。古い .NET 3.5 ランタイムを使用するプロジェクトでは機能しません。

新しい入力システムをインストールするには、Unity のパッケージ マネージャーを開きます (メニュー: [ウィンドウ] > [パッケージ マネージャー])。リストから入力システムパッケージを選択し、[インストール]をクリックします。

デフォルトでは、Unity のクラシック入力マネージャー ( UnityEngine.Input) がアクティブになり、新しい入力システムのサポートは非​​アクティブになります。

これにより、既存の Unity プロジェクトはそのまま動作し続けることができます。入力システム パッケージをインストールするときに、Unity は新しいバックエンドを有効にするかどうかを尋ねます。[はい]をクリックすると、Unity は新しいバックエンドを有効にし、古いバックエンドを無効にし、エディターが再起動します。

2.ご使用にあたって

PlayerInput コントロールをコントロール オブジェクトに追加します

ここに画像の説明を挿入します

入力アクションを作成し、右クリック -> [作成] -> [InputAction] を選択し、それを PlayerInput コンポーネントのアクションにリンクし、プロジェクトのニーズに応じてボタンを設定します。
ここに画像の説明を挿入します

アクションの応答を設定する コンポーネントにアクションが設定されたら、各アクションの応答を設定する必要があります。PlayerInput を使用すると、インスペクター ウィンドウの Behavior プロパティを使用して、いくつかの方法で応答を設定できます。
ここに画像の説明を挿入します

上のスクリーンショットでは、Unity UI と同じ方法で UnityEvents を使用する Invoke Unity Events を使用しています。Unity は、コンポーネントにリンクされたアクションごとにイベントを表示します。これにより、各イベントのターゲット メソッドを直接接続できます。上の図は、アクション内の Jump、LongJump、および TouchPosition の動作を示しています。これらはそれぞれ、PlayerController スクリプト内の公開で変更された Jump、LongJump、および Gettouchposition メソッドに接続されています。

メソッド スクリプトでは、UnityEngine.InputSystem; を使用して名前空間を使用し、PlayerInput コントロールを取得する必要があることに注意してください。


学習の過程で以下の内容を参考にさせていただきました。知識を共有してくださった方々に心より感謝いたします。

2022 Unity テクノロジー |Unity 公式マニュアル

おすすめ

転載: blog.csdn.net/qq_18931093/article/details/130715761