【Unity】Input Systemでスクリプトからキーバインドを元の値を書きかえずに任意の値へ変更する

開発環境
  • Unity 2022.3.45f1
  • Input System 1.7.0

ユーザー入力を待ってバインディングを変更する場合は下記の記事(外部リンク)を参考にどうぞ。

今回はユーザー入力ではなく、スクリプトからキーボードのバインディングを変更する。

その際に元の値は書きかえずRemoveAllBindingOverrides()でいつでも元に戻せるようにしとく。

//ゲーム開始時に設定
public void GameStartBinding(int index)
{
    //indexには変更したいactionのBindingIndexを指定
    InputBinding inputBinding = _action.bindings[index];//_actionにはInputActionReferenceのactionプロパティを代入しておく
    inputBinding.overridePath = "<Keyboard>/" + "変更後のPath(例:WやSなど)"
    _action.ApplyBindingOverride(index, inputBinding);//変更の実行
}
Code language: C# (cs)

上記サンプルではゲーム開始時に呼び出せるようにしてある。ユーザーが設定したバインディングを保存しといて、起動時に読み込んでもいいかもしれない。

InputSystemは割と初心者には難しい。(自分も躓いた)

コメント

タイトルとURLをコピーしました