根据屏幕大小进行缩放和定位

问题描述 投票:0回答:1

如何根据屏幕的大小进行缩放和定位,如图当缩放屏幕时,对象会有一个位置和比例的变化。enter image description here

unity3d
1个回答
1
投票

在你的画布中,有一个叫做canvas scaler的组件,它有一个叫做UI Scale Mode的属性,把它改成与屏幕大小一起缩放。之后,你必须设置你的UI元素的支点和锚点。

我的建议是检查 本文,它完全针对你的例子一步步描述了一切。我相信你看完这篇文章后,一定会有一个非常好的理解。


0
投票

这是一种方法。将这个脚本附加到你画布中的圆圈元素上,并调整变量。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class UiElementScaleManager : MonoBehaviour
{

    private RectTransform rectTransform = null;
    [SerializeField] [Range(-200, 200)] private float offsetX = 85f;
    [SerializeField] [Range(-200, 200)] private float offsetY = 5f;
    [SerializeField] [Range(0, 200)] private float width = 10f;
    [SerializeField] [Range(0, 200)] private float height = 10f;
    [Tooltip("If checked then height variable will not be used.")]
    [SerializeField] private bool preserveAspect = false;

    private void Start()
    {
        rectTransform = GetComponent<RectTransform>();
        rectTransform.pivot = Vector2.zero;
        rectTransform.anchorMax = Vector2.zero;
        rectTransform.anchorMin = Vector2.zero;
    }

    private void Update()
    {
        rectTransform.sizeDelta = new Vector2(Screen.width * width / 100, ((preserveAspect) ? Screen.width * width : Screen.height * height) / 100);
        rectTransform.anchoredPosition = new Vector2(Screen.width * offsetX / 100, Screen.height * offsetY / 100);
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.