Unity6で端末情報を取得する方法まとめ|バッテリー/電波状況/OSバージョンほか

Unity

Unityでゲームを開発していると、プレイヤーの端末の状態を取得したい場面に出くわします。
たとえば、「ログ送信時に端末のOSバージョンやバッテリー状況を添えておきたい」「通信環境によって演出を調整したい」など、実用性は高いです。

Unity6でも引き続き使える情報取得APIのうち、今回は以下の代表的な項目を紹介します:

  • バッテリーの残量や状態
  • ネットワーク(電波)状況
  • その他、端末関連の基本情報

🔋 バッテリーの状態を取得する

Unityには**SystemInfo.batteryLevel** や SystemInfo.batteryStatus という便利なプロパティがあります。

void LogBatteryStatus()
{
float level = SystemInfo.batteryLevel; // 0.0〜1.0(充電中は常に1.0)
BatteryStatus status = SystemInfo.batteryStatus;

Debug.Log($"Battery Level: {level * 100}%");
Debug.Log($"Battery Status: {status}");
}

BatteryStatusの値

  • Charging(充電中)
  • Discharging(放電中)
  • Full(満充電)
  • NotCharging(接続されているが充電されていない)
  • Unknown(不明)

⚠️ 注意:PCなどの非モバイル環境では、batteryLevel == -1 になることがあります。

📶 ネットワークの状態・電波強度を取得する

Unity標準APIではネット接続の有無は取得できますが、「電波の強さ(アンテナ本数など)」までは取得できません。
ただし、Android限定で Java 経由で取得することは可能です。(めんどいので割愛しますが)

bool IsNetworkAvailable()
{
return Application.internetReachability != NetworkReachability.NotReachable;
}

上記の IsNetworkAvailable() は「モバイル通信 or WiFi通信ならtrue、オフラインならfalseを返す」という関数になっています。

internetReachabilityの状態

  • NotReachable: オフライン
  • ReachableViaCarrierDataNetwork: モバイル通信(4G/5G)
  • ReachableViaLocalAreaNetwork: Wi-Fi

🧠 その他の端末情報を取得する方法

以下もUnity6で取得可能な端末情報です。

項目API例備考
OSバージョンSystemInfo.operatingSystem“Android OS 14 / iOS 17” など
デバイス名SystemInfo.deviceName製造元名と端末名
メモリ容量SystemInfo.systemMemorySize単位:MB
CPUタイプSystemInfo.processorTypeSoC名(例:Snapdragon 888など)
CPUコア数SystemInfo.processorCount
GPU情報SystemInfo.graphicsDeviceNameGPU名(Adreno, Maliなど)
解像度Screen.currentResolutionwidth, height, refreshRateが取得可
DPIScreen.dpiディスプレイの密度(ppi)
言語Application.systemLanguageSystemLanguage.Japanese など

🔚 まとめ:Unity6で端末情報を取るならここを押さえよう!

Unity6でも、SystemInfoApplication を通じて、かなりの量の端末情報を取得できます。
より細かい情報(バージョンコードや電波強度など)は、AndroidJavaObject やネイティブプラグインを活用しましょう。

特に使う機会が多いAPI 5選

  • SystemInfo.batteryLevel
  • SystemInfo.batteryStatus
  • Application.internetReachability
  • SystemInfo.operatingSystem
  • Application.version + AndroidJavaObjectでのバージョンコード

今後、Unity6でのより深いネイティブ連携にも挑戦していきたいですね!
それでは、よきデバッグライフを!

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