【Unity】ゲームパットの接続/切断時に通知を出してあげる
概要
ゲームパッドの接続、接続解除時の動作を追加しました!やりたかったことができたので良かった。#StrangeTelephone pic.twitter.com/Ush1K5LPbH
— Yuta Kusahara (@yyuta342) 2018年11月28日
#StrangeTelephone を開発されている方のツイートを見て、ゲーム側でゲームパット接続の通知を出してあげることに良さみを感じました。
接続した際に、これがゲームで使えるかどうかを教えてあげるのはプレイヤーに対して優しいですね。
Nintendo SwitchなんかでもJoyConくっつけたら画面に表示されますし。
これについて、Unityで実装をしてみました。
確認環境
Unity2018.2.20f1 Personal
Input.GetJoystickNamesを使う方法
スクリプト
using UnityEngine; using System.Linq; /// <summary> /// ゲームパット接続/切断 サンプルコード /// </summary> public class OutputLog : MonoBehaviour { string[] CacheJoystickNames; void Start () { CacheJoystickNames = Input.GetJoystickNames(); } void Update () { var joystickNames = Input.GetJoystickNames(); // ※同一フレーム中に接続/切断した時については未検証 // ※複数のゲームパットでは動作未検証 if(CacheJoystickNames.Length > joystickNames.Length){ Debug.Log("切断" + CacheJoystickNames.Except(joystickNames).ToList()[0]); } if(CacheJoystickNames.Length < joystickNames.Length){ Debug.Log("接続" + joystickNames.Except(CacheJoystickNames).ToList()[0]); } CacheJoystickNames = joystickNames; } }
結果
ゲームパット接続/切断時を取得することができました。
Rewiredのイベントを使う方法
様々なゲームパットの対応を用意にしてくれるAssetのRewiredを使用している場合、
Rewired側がイベントの用意をしてくれているので、公式ドキュメントにならえば良いです。
Receiving Joystick connect and disconnect events
その他
あとはuGUIやDotweenなどで画面を作ってあげたり、通知時にSEを鳴らしたりすれば良さそうです。