在你的画布中,有一个叫做canvas scaler的组件,它有一个叫做UI Scale Mode的属性,把它改成与屏幕大小一起缩放。之后,你必须设置你的UI元素的支点和锚点。
我的建议是检查 本文,它完全针对你的例子一步步描述了一切。我相信你看完这篇文章后,一定会有一个非常好的理解。
这是一种方法。将这个脚本附加到你画布中的圆圈元素上,并调整变量。
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);
}
}