如何确定设备是使用 Unity 引擎的手机还是平板电脑,是否可以在 C# 中完成

本文关键字:是否 平板电脑 手机 何确定 Unity 引擎 | 更新日期: 2023-09-27 18:35:07

也许之前有人问过,但我做了研究,只找到了JS的解决方案,但我需要一个解决C#问题的解决方案。

所以,基本上我想知道我的游戏是否在平板电脑的小手机屏幕上运行,独立于平台(iOS,Droid,WP8)。

有什么建议吗?

如何确定设备是使用 Unity 引擎的手机还是平板电脑,是否可以在 C# 中完成

您可以使用 Screen.height 和 Screen.dpi 来计算物理屏幕高度,然后设置阈值,即表示它是手机或平板电脑。也许还有另一个门槛,如果你想区分平板手机。

float screenHeightInInch =  Screen.height / Screen.dpi;
if (screenHeightInInch < 3.1)
{
    // it's a phone
}
else
{
    // it's tablet
}

对于iOS,您可以使用iPhone.generation和iPhoneGeneration来检测iPad。

对于其他平台,我认为您应该使用屏幕高度,宽度(纵横比),dpi或类似的东西来确定屏幕尺寸是否为平板电脑。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LoadImage : MonoBehaviour
{
   [SerializeField] private UnityEngine.UI.Image image = null;
   public GameObject mainCamera;
   private void Awake()
   {
       int value = GetDeviceId();
       if (image != null)
       {
           if (value==0)
           {
               // it's a Iphone
               image.sprite = Resources.Load<Sprite>("Images/BGMM");
           }
           else if (value==1)
           {
               // it's IphoneMax
               image.sprite = Resources.Load<Sprite>("Images/BGMM");
           }
           else if (value == 2)
           {
              // it's IPad
               image.sprite = Resources.Load<Sprite>("Images/2732");
           }
       }
   }
public int GetDeviceId()
{
    float val = 1.77f;
    float width = mainCamera.GetComponent<Camera>().pixelWidth;
    float height = mainCamera.GetComponent<Camera>().pixelHeight;
    
    if (width > height)
    {
        val = width / height;
    }
    else
    {
        val = height / width;
    }
    if (val > 1.7f && val < 1.8f)
    {
        return 0;
    }
    else if (val > 2.1f && val < 2.2f)
    {
        return 1;
    }
    else if (val > 1.3f && val < 1.4f)
    {
        return 2;
    }
    return 0;
}

}