using UnityEngine;
public class ThisToFitScreen : MonoBehaviour
{
public UIWidget ObjectOfReference;
public uint EdgeDistance;
bool isDone;
void Awake()
{
isDone = false;
}
void Update()
{
if (isDone) return;
var widget = GetComponent<UIWidget>();
var trans = widget.transform;
var scale = getRatio(ObjectOfReference ?? widget, EdgeDistance);
trans.localScale = new Vector3(scale, scale, 0);
var x = trans.localPosition.x * scale;
var y = trans.localPosition.y * scale;
trans.localPosition = new Vector3(x, y, 0);
isDone = true;
}
static float getRatio(UIWidget widget, uint margin)
{
var root = FindObjectOfType<UIRoot>();
var zoomRatio = (float)root.activeHeight / Screen.height;
var ratioX = Screen.width * zoomRatio / (widget.width + margin);
var ratioY = Screen.height * zoomRatio / (widget.height + margin);
return Mathf.Min(ratioX, ratioY);
}
}
ThisToFitScreen.cs
最新推荐文章于 2024-01-24 22:33:04 发布