Unity得到屏幕宽度

自带的Screen.width

一般情况可以使用Screen.width来获取现在的屏幕宽度

UnityEngine.Screen.width

但是如果我们在开发的时候使用了Canvas Scaler来控制在各种分辨率保证UI的比例时使用Screen.width得到的宽度会和我们实际的宽度有差别。、

测试

设置Canvas Scaler和设置一个分辨率

设置Canvas Scaler
设置一个分辨率
从Scene窗口我们看到它的实际宽度只有1625并不是分辨率的2340
在这里插入图片描述
我们用简单的脚本控制一下方块的位置

  void Start()
    {
    
    
        RectTransform rect = this.GetComponent<RectTransform>();
        rect.anchoredPosition = new Vector2(-Screen.width,0);
        Debug.Log(Screen.width);
        
    }

在这里插入图片描述
出来的结果时2340并不是1625
在这里插入图片描述
得到正确的宽度,unity宽度的变化其实时按照屏幕的比值来计算的比如1334750是16:9的屏幕,而23401080是19.5:9的屏幕,所以如果是宽度分辨率位2340时它的宽度应该为1334*(19.5/16),下面是代码具体实现。

RectTransform rect = this.GetComponent<RectTransform>();
		//(Screen.height / 750):在16:9的情况下高度应该放大多少倍
        float Realwidth = (Screen.width / ((Screen.height / 750) * 1334)) * 1334;
        rect.anchoredPosition = new Vector2(-Realwidth,0);
        Debug.Log(Realwidth);

最后

这是前些天在适配不同分辨率手机的时候发现的一个有趣的小问题,当时也是找了很久发现并没有这方面的文章,所以今天就来记录一下

猜你喜欢

转载自blog.csdn.net/lian_hang/article/details/126322280