Unityを実行させる環境がAndroidやiOSなどで異なるため様々なシステム情報を取得して、それに応じて切り替える必要がある場合があります。そういった情報はSystemInfoから引っ張ってくることができます。
SystemInfo
SystemInfo – Unity スクリプトリファレンスにはCPU情報、グラフィックに関するもの、画面解像度やバッテリー情報などの取得できるプロパティがあります。これらのいくつかを試しにAndroid と iOSで取得してみたいと思います。
Textの設定
こちらでCanvas上にテキストを表示する方法が示してあるので、これに沿ってシステム情報を表示してみます。
「Hierarchy」「Create」「UI」から「Text」を選択するとCanvasの下にTextが作られます。
TextのInspectorを開き Rect Transform の Width, Height を大きくして、Text(Script)の Font Size を例えば 40 に変更します。フォントの色も明るい黄緑色に変更してみました。
背景をグレー調にするため、例えばMain CameraのZ軸を45°回転させておきます。
Script作成
Textにシステム情報を表示させるscriptを記述します。改行を繰り返して情報を並べました。
SysInfo.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class SysInfo : MonoBehaviour { public Text sysinfo; // Use this for initialization void Start () { sysinfo.text = string.Format("Name: {0}", SystemInfo.deviceName) + "\r\n"; sysinfo.text += string.Format("Model: {0}", SystemInfo.deviceModel) + "\r\n"; sysinfo.text += string.Format("Type: {0}", SystemInfo.deviceType) + "\r\n"; sysinfo.text += string.Format("GraphicDeviceName: {0}", SystemInfo.graphicsDeviceName) + "\r\n\r\n"; sysinfo.text += string.Format("OS: {0}", SystemInfo.operatingSystem) + "\r\n"; sysinfo.text += string.Format("CPU: {0}", SystemInfo.processorType) + "\r\n"; sysinfo.text += string.Format("Core: {0}", SystemInfo.processorCount) + "\r\n"; sysinfo.text += string.Format("Frequeny: {0} MHz", SystemInfo.processorFrequency) + "\r\n"; sysinfo.text += string.Format("RAM: {0} MB", SystemInfo.systemMemorySize) + "\r\n\r\n"; Resolution reso = Screen.currentResolution; sysinfo.text += string.Format("Resolution: {0} x {1}", reso.width, reso.height) + "\r\n"; sysinfo.text += string.Format("RefreshRate: {0} Hz", reso.refreshRate) + "\r\n\r\n"; sysinfo.text += string.Format("Battery Level: {0:##.#} %", SystemInfo.batteryLevel * 100) + "\r\n"; sysinfo.text += string.Format("Battery Status: {0}", SystemInfo.batteryStatus) + "\r\n"; } // Update is called once per frame void Update () { } } |
空のGameObjectを生成して、このScriptを入れます。
このGameObjectにScriptが反映されたので、public な変数SysinfoにTextを設定します。
iPhone X で確認
以下を参考に、iOSにスイッチしてプロジェクトを展開。iPhoneにインストールして実行します。
iPhone X で表示されました。
Nexus 5X で確認
以下を参考に、Androidにスイッチして Build & Run で実機にインストールし実行。
Nexus 5Xでの表示です。
Reference:
SystemInfo – Unity スクリプトリファレンス