如何确定设备是使用 Unity 引擎的手机还是平板电脑,是否可以在 C# 中完成
本文关键字:是否 平板电脑 手机 何确定 Unity 引擎 | 更新日期: 2023-09-27 18:35:07
也许之前有人问过,但我做了研究,只找到了JS的解决方案,但我需要一个解决C#问题的解决方案。
所以,基本上我想知道我的游戏是否在平板电脑的小手机屏幕上运行,独立于平台(iOS,Droid,WP8)。
有什么建议吗?
您可以使用 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;
}
}