Unity中UI在不同設備下的自適應

using UnityEngine;

public class UIAdaptation : MonoBehaviour
{
    [Header("劉海屏遮擋住的UI")]
    public RectTransform[] ui_bangMask;
    [Header("需要調整位置與縮放的UI")]
    public RectTransform[] ui_transAndScale;

    private void Start()
    {
        //調整劉海屏遮擋住的UI
        if (Mathf.Abs((Screen.height * 1.0f / Screen.width) - 2.16f) < 0.01f)
        {
            foreach (var ui in ui_bangMask)
            {
                ui.localPosition -= new Vector3(0, Screen.height * 0.035f, 0);
            }
        }

        //調整因屏幕比例變化出現問題的UI位置與縮放
        foreach (var ui in ui_transAndScale)
        {
            float ratio = GameObject.Find("Canvas").GetComponent<RectTransform>().rect.width / 750f;
            Vector3 rawLocalScale = ui.localScale;
            ui.localScale = ratio * rawLocalScale;
            ui.anchoredPosition = ratio * ui.anchoredPosition;
        }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章