コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Input System でデバイスの接続切断を検知する方法

概要

using System;
using UnityEngine;
using UnityEngine.InputSystem;

public class Example : MonoBehaviour
{
    private void Awake()
    {
        InputSystem.onDeviceChange += ( device, change ) =>
        {
            Debug.Log( $"[onDeviceChange] {device}, {change}" );

            switch ( change )
            {
                // 新しいデバイスがシステムに追加された
                case InputDeviceChange.Added: break;

                // 既存のデバイスがシステムから削除された
                case InputDeviceChange.Removed: break;

                // 切断された
                case InputDeviceChange.Disconnected: break;

                // 再接続
                case InputDeviceChange.Reconnected: break;

                // 有効化
                case InputDeviceChange.Enabled: break;

                // 無効化
                case InputDeviceChange.Disabled: break;

                // 使用方法変更
                case InputDeviceChange.UsageChanged: break;

                // 構成変更
                case InputDeviceChange.ConfigurationChanged: break;

                case InputDeviceChange.SoftReset: break;

                case InputDeviceChange.HardReset: break;

                default: throw new ArgumentOutOfRangeException( nameof( change ), change, null );
            }
        };
    }
}