[Unity] ネットワークの接続状態を取得する
ネットワーク通信を行うゲームにて、ネットワーク接続状態を調べる方法の紹介です。
iPhoneやAndroid端末など電波状況によって圏外になったり、ユーザから機内モードに設定されたりする可能性があります。
ここでネットワークの接続状態をチェックしておけば状態に応じた処理が可能です。
接続状態はApplication.internetReachabilityから取得できます。
値は以下の通り。
NotReachable
ネットワークには到達不可
ReachableViaCarrierDataNetwork
キャリアデータネットワーク経由で到達可能
ReachableViaLocalAreaNetwork
Wifiまたはケーブル経由で到達可能
実際の使い方は以下のようになります。
using UnityEngine; using System.Collections; public class NetworkChecker : MonoBehaviour { void Update() { if ( !Input.GetMouseButtonDown(0) ) { return; } // ネットワークの状態を出力 switch ( Application.internetReachability ) { case NetworkReachability.NotReachable: Debug.Log("ネットワークには到達不可"); break; case NetworkReachability.ReachableViaCarrierDataNetwork: Debug.Log("キャリアデータネットワーク経由で到達可能"); break; case NetworkReachability.ReachableViaLocalAreaNetwork: Debug.Log("Wifiまたはケーブル経由で到達可能"); break; } } }
マウスの左ボタンが押下されるたびにネットワークの接続状態をコンソールに出力するスクリプトです。
スマートフォンの場合、キャリアかWifiのどちらで接続されているかが分かるため、巨大なデータをダウンロードするときにキャリア接続なら警告メッセージを表示するといった使い方が可能です。