UGUI。图片锚点选择中心点对齐。
效果类似windows壁纸的填充。就是按比例放大,刚好覆盖整个屏幕。
使用方法:将脚本挂到需要适配的背景图上,调整锚点中心对齐。将需要适配的Canvas拖到脚本的canvas字段上赋值即可。
脚本如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class BGResize : MonoBehaviour
{
public RectTransform canvas;
float canvasW = 0f;
float canvasH = 0;
float imgW = 0;
float imgH = 0;
// Start is called before the first frame update
void Start()
{
if (canvas == null)
{
canvas = GameObject.FindObjectOfType<Canvas>().GetComponent<RectTransform>();
}
canvasW = canvas.rect.width;
canvasH = canvas.rect.height;
imgW = transform.GetComponent<Image>().sprite.rect.width;
imgH = transform.GetComponent<Image>().sprite.rect.height;
ResizeBG();
}
void ResizeBG()
{
if (imgW / imgH == canvasW / canvasH)
{
transform.GetComponent<RectTransform>().sizeDelta = new Vector2(canvasW, canvasH);
}
else if (imgW / imgH > canvasW / canvasH)
{
// 图片比例比屏幕宽
float b = imgW / imgH;
transform.GetComponent<RectTransform>().sizeDelta = new Vector2(canvasH * b, canvasH);
}
else
{
//图片比例比屏幕高
float b = imgW / imgH;
transform.GetComponent<RectTransform>().sizeDelta = new Vector2(canvasW, canvasW / b);
}
}
}