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.processorType | SoC名(例:Snapdragon 888など) |
CPUコア数 | SystemInfo.processorCount | |
GPU情報 | SystemInfo.graphicsDeviceName | GPU名(Adreno, Maliなど) |
解像度 | Screen.currentResolution | width, height, refreshRateが取得可 |
DPI | Screen.dpi | ディスプレイの密度(ppi) |
言語 | Application.systemLanguage | SystemLanguage.Japanese など |
🔚 まとめ:Unity6で端末情報を取るならここを押さえよう!
Unity6でも、SystemInfo
や Application
を通じて、かなりの量の端末情報を取得できます。
より細かい情報(バージョンコードや電波強度など)は、AndroidJavaObject やネイティブプラグインを活用しましょう。
特に使う機会が多いAPI 5選
SystemInfo.batteryLevel
SystemInfo.batteryStatus
Application.internetReachability
SystemInfo.operatingSystem
Application.version
+ AndroidJavaObjectでのバージョンコード
今後、Unity6でのより深いネイティブ連携にも挑戦していきたいですね!
それでは、よきデバッグライフを!