Screen.dpi
Declaration
public static float dpi;Описание
Текущая плотность пикселей экрана, измеренная в точках на дюйм (DPI) (только для чтения).
Это фактическое DPI экрана или физического устройства, на котором выполняется приложение. Свойство возвращает 0, если текущее DPI не может быть определено.
Android: На устройствах Android это свойство использует densityDpi, который является логическим контейнером, содержащим диапазон значений DPI, а не предоставляет точное значение. В качестве альтернативы вы можете рассчитать значение DPI, используя среднее значение xdpi и ydpi, как показано в следующем примере кода.
Хотя этот подход может дать более точное значение DPI, некоторые устройства Android могут сообщать неправильные значения xdpi и ydpi. Рекомендуется учитывать эти неточности при использовании этого метода.
using UnityEngine; using UnityEngine.Android;
public class Example : MonoBehaviour { private void Start() { Debug.Log("SCREEN DPI: " + GetDPI()); }
float GetDPI() { using var version = new AndroidJavaClass("android.os.Build$VERSION"); var apiLevel = version.GetStatic<int>("SDK_INT"); using var metrics = new AndroidJavaObject("android.util.DisplayMetrics"); if (apiLevel >= 30) { using var display = AndroidApplication.currentActivity.Call<AndroidJavaObject>("getDisplay");
display.Call("getRealMetrics", metrics); } else { using var display = AndroidApplication.currentActivity.Call<AndroidJavaObject>("getWindowManager") .Call<AndroidJavaObject>("getDefaultDisplay");
display.Call("getMetrics", metrics); }
float xdpi = metrics.Get<float>("xdpi"); float ydpi = metrics.Get<float>("ydpi"); return (xdpi + ydpi) * 0.5f; } }