Unity 6.3
0 онлайн 40 гостей 3 в системе
Вход

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; } }