UnityのRewired導入とその使い方

本記事はUnityでキーボード、マウス、ゲームパッドなどの入力を全て管理してくれるRewiredというアセットの導入とその使い方についてご紹介します。
5000円ほどかかりますが、十分その価値がありました！
https://assetstore.unity.com/packages/tools/utilities/rewired-21676
#Rewiredの導入
Unityのプロジェクトを作成したら、Window -> Asset Store -> Search onlineでアセットストアを開きます。
![COCOdayo - SampleScene - PC, Mac & Linux Standalone - Unity 2020.3.11f1 Personal _DX11_ 2021_12_17 20_32_40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2401352/6c0b949d-c6d4-86d4-887b-0b689f041b70.png)
検索欄にRewiredと入力すると見つかるので、そちらを購入しましょう。
![Rewired _ Utilities Tools _ Unity Asset Store - Google Chrome 2021_12_17 21_02_51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2401352/d954fd00-f7e5-9020-51f1-df3155919225.png)
次にUnityに戻ってWindow -> Package Managerでパッケージマネージャを開きます。
![COCOdayo - SampleScene - PC, Mac & Linux Standalone - Unity 2020.3.11f1 Personal _DX11_ 2021_12_20 12_14_39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2401352/a31454ae-da64-7ce5-4904-4944d1fbbcf4.png)
その中からRewiredを選択してDownloadボタンを押します。
ダウンロードが完了したらImportボタンを押してパッケージをインポートします。
Importボタンを押すと以下のようなポップアップメッセージが次々表示されるので、Proceed、Add Settings、Installを押していきます。
　　　　![153da2a1a4d5e84b880939cbbdce1947.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2401352/ab919f5d-8f11-6a49-0d33-8d86cb886fe0.png)
　![c9c069e633dbaa5a80bd06b63ceb178f.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2401352/5304aa00-bc91-21b8-dad9-da130d1c4782.png)
　　　　![bc1b08d1d9bfad86eea6a8cc10a96d43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2401352/c091a584-e72b-b340-39e0-89005a5cb9f4.png)
続いてこのようなポップアップメッセージが表示されます。こちらはインストール前にパッケージマネージャからText Mesh Proをインストールしないと、コンパイラーエラーが発生するとのことなので、Text Mesh Proをインストールしていない場合はStandard Versionを選択します。
今回はStandard Versionを選択していきます。
　　　　![f383f5bee6dc2b179661a26d7d723a6f.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2401352/70ae086f-6043-8edd-3c1c-5ba59ebcd7f0.png)
次にこのようなポップアップメッセージが表示されます。
こちらはスマートフォンに対応したゲームを作っている場合にはInstallを押しましょう。
　　　　![2998127b3b56037541ddf10fc4f069b1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2401352/7e9b3b44-beba-1ffa-04c0-0f1ca226d865.png)
最後にこのようなポップアップメッセージが表示されるのでInstall Docsを押しましょう。
![62c0b7fc412c3073245192970b016cfd.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2401352/c8c8883d-d45d-6616-718d-b0db03180ec2.png)
ここまでの流れでやっぱりインストールしたい、と思ったところがあった場合はWindow -> Rewired -> Setup -> Run Installerから再度やり直せます。
# Rewiredの使い方
Window -> Rewired -> Create -> Input ManagerでRewired Input Managerをヒエラルキーウィンドウに作ります。
その後、Rewired Input Managerを選択してインスペクターウィンドウのInput Manager内にあるLaunch Rewired Editorを選択します。
![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2401352/d0baf50c-8bf8-9e25-4aa7-9dab86fd9c97.png)
Launch Rewired Editorを押すとこのようなウィンドウが表示されます。選択項目がたくさんありますが、今回は主に使用するPlayers、Actions、Joystick Maps、Keyboard Maps、Mouse Mapsについて説明します。
![COCOdayo - SampleScene - PC, Mac & Linux Standalone - Unity 2020.3.11f1 Personal_ _DX11_ 2021_12_20 22_27_33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2401352/ba5c1c09-54f8-2d69-8146-602340e264a6.png)
上の五つの項目について軽く説明しておくと
Players:ゲームのプレイヤーを人数分登録する
Actions:ゲーム内でジャンプや歩くなどの動作に名前を付けます
Joystick Maps:様々な種類のゲームパッドの各ボタンにActionsで設定した動作を対応させる
Keyboard Maps:キーボードの各キーにActionsで設定した動作を対応させる
Mouse Maps:マウスのクリックなどにActionsで設定した動作を対応させる
というものになってます。
## 一つの動作に対してゲームパッド、キーボード、マウスを設定する
まずはPlayersを選択して左下にあるNewを押しましょう。
![図2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2401352/7da47f31-8c47-e94b-0754-fd004aed750b.png)
するとPlayers:の項目に1:Player0が追加されます。
この数を増やすことでゲームのプレイヤーを増やしていくことができます。
次にActionsを選択して画面下らへんにあるNewを押しましょう。
その後、右にいくつか項目が出てくるので、その中のNameとDescriptive Nameを作りたい動作の名前に変更します。（この名前はスクリプトで使うので入力しやすい名前にしましょう）
![図5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2401352/496e33b2-0500-d802-c36f-a2595fc11e07.png)
#### ゲームコントローラーの入力を実装する
Joystick Mapsを選択します。
すると左側に数多くの種類のゲームコントローラーがあるので、実装したいものを選びましょう。今回はXbox 360 Controllerを使います。
コントローラーを選択したらCreate Mapを押します。
![図6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2401352/b59866ce-ecd6-bdfa-d513-8c8f7eb4c843.png)
下にCreate Defaultsというボタンが表示されるのでそちらを押します。
するとElement欄に選択したコントローラーの入力一覧が表示されるので使いたい入力を選択します。今回はAを使うことにします。
入力を選択したら右側に先ほどActionsで作ったhogeという名前の動作があるのでそちらを選択することで、そのボタンにhogeという動作が紐づきます。
#### キーボード入力を実装する
Keyboard Mapsを選択し、表示されるCreate Mapを選択します。
![図8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2401352/082b7f23-2fd0-65f5-fdcc-b0be6d4f16bd.png)
次に画面下にあるNewを押してから動作を発生させたいキーをKey欄から選択します。
Actionsで作ったhogeという名前の動作を選択し、そのキーにhogeという動作を紐づけます。
![図9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2401352/9063547b-fa6b-2300-6dac-de674cd2dd00.png)
#### マウス入力を実装する
Mouse Mapsを選択し、表示されるCreate Mapを選択します。
![図10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2401352/0ead30a2-be93-5d72-401b-851c409e9e3a.png)
次に画面下にあるNewを押してから画面右にあるNoneを押して、動作を発生させたいマウス入力を選択します。今回はLeft Mouse Button（左クリック）を選択しました。
その後、先ほどまでと同様にActionsで作ったhogeという動作を選択して紐づけます。
![図11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2401352/8070b5da-c2d5-82bf-f628-379b02868595.png)
#### ここまで設定したMapsをPlayerに紐づける
Playersを選択します。
下に表示されるJoystick Mapsを選択して、Add Joystick Mapを押します。
![図13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2401352/84db96cd-9628-8789-c013-539468f11f4e.png)
これだけでPlayer0にJoystick Mapが紐づきました！
あとは同じようにKeyboard MapsとMouse Mapsも紐づけます。
# 実際にスクリプトで作った動作を使ってみる
以下のようなスクリプトを作ります。
![COCOdayo - Microsoft Visual Studio 2021_12_21 0_12_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2401352/1d490669-6abc-13e3-5058-ec12a474d171.png)
using Rewired; を忘れないように注意してください。
player0.GetButtonDown("hoge")は、先ほどRewiredで作った動作名hogeに紐づけた入力のいずれかが押されることを取得できます。
今回はhogeにXbox360 ControllerのA、キーボードのW、マウスの左クリックが紐づいているので、このいずれかが押されるとhogeという文字をコンソールウィンドウに表示するようになっています。
このスクリプトをヒエラルキー上の適当なところにアタッチしてから実行すると
以下のようにキーボード、マウス、Xbox360 Controller全ての入力でhogeと表示されました！
![bea5d0d62a92dd6a9e400cb40ae450e4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2401352/30d49c92-c69e-0078-790c-f6041804e5ca.png)
あとはこの入力でゲーム内のキャラクターがジャンプしたりするようにすればすべての入力に対応したゲームを作ることができます！
Rewiredを使ってぜひ快適なゲーム制作ライフを～