Unity开发中刘海屏手机的屏幕适配

Unity UGUI在刘海屏手机的屏幕适配主要是针对iPhoneX的适配。

解决方法是每一个界面的最上层都是一个横纵Stretch自动拉伸的,当检测到当前是IPhoneX时,打开界面代码自动设置Left Top Right Bottom 为44.

通过分辨率来判断当前手机是不是iPhoneX。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

///

/// 自适应iPhoneX

///

/// Canvas.

private void OpeniPhoneX(Canvas canvas){

#if UNITY_IPHONE

if (Screen.width == 2436 && Screen.height == 1125){

RectTransform rectTransform = (canvas.transform as RectTransform);

rectTransform.offsetMin = new Vector2(44f,0f);

rectTransform.offsetMax = new Vector2(-44f,0f);

}

#endif

}

 

接着就是界面最下面可能有些需要全屏的图,这样就不全屏了,所以需要给全屏图挂一个脚本。一般做全屏图有两种方式,一个是自动拉伸的,另一个就是AspectTatioFitter带裁切的全屏。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.UI;

///

/// 自适应iPhoneX背景

///

public class UIRectLayout : MonoBehaviour

{

#if UNITY_IPHONE

void Awake () {

if (Screen.width == 2436 && Screen.height == 1125) {

AspectRatioFitter aspectRatioFitter = GetComponent ();

if (aspectRatioFitter) {

aspectRatioFitter.aspectRatio = 2.165333f;

} else {

RectTransform rectTransform = transform as RectTransform;

if (rectTransform.anchorMax.x == 1f) {

rectTransform.offsetMin = new Vector2(rectTransform.offsetMin.x - 44f,rectTransform.offsetMin.y);

rectTransform.offsetMax = new Vector2(rectTransform.offsetMax.x +44f,rectTransform.offsetMax.y);

}

}

}

}

#endif

}

你可能感兴趣的:(Unity屏幕适配)