반응형

안녕하세요.

해상도 변경에 따라서 UI위치를 변경하는 방법에 대해 알아보도록 하겠습니다.

Canvas의 셋팅을 2560x1440기준으로 Match을 1로 셋팅하여 세로 해상도에 영향을 받지 않도록 하겠습니다.

일단 다음과 같이 버튼 UI를 배치했을 경우가 있습니다.

16:9 해상도에 맞춰서 UI를 배치했습니다.

근데 만약 해상도를 18:9로 변경되었을 경우에는 여백이 많이 생기게됩니다.

이런 경우 해상도 비율에 맞춰서 UI를 이동시킬 수 있습니다.

버튼 오브젝트에 스크립트를 추가합니다.

버튼 오브젝트를 모두 선택한 후 Add Componect로 스크립트를 추가합니다.

그 후 스크립트에 다음 코드를 작성합니다.

16:9 기준으로 코드를 작성했습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class csUIPositon : MonoBehaviour
{
    void Start()
    {
        float fScaleWidth = ((float)Screen.width / (float)Screen.height) / ((float)16 / (float)9);
        Vector3 vecButtonPos = GetComponent<RectTransform>().localPosition;
        vecButtonPos.x = vecButtonPos.x * fScaleWidth;
        GetComponent<RectTransform>().localPosition = new Vector3 (vecButtonPos.x, vecButtonPos.y, vecButtonPos.z);
    }
}
 
cs

 

이렇게 작성후 해상도를 변경한 후 실행을 해보면 버튼 UI가 해상도에 맞춰서 이동하는것을 확인할 수 있습니다.

16:9 실행화면
18:9 실행화면
800x480실행화면
2160x1080 실행화면

반응형

+ Recent posts