常规的适配做法采用根节点挂一个Canvas Scaler,如下
简单粗暴,等比缩放,优点是适配简单、问题少、对制作人员的要求比较低,缺点是因为是等比缩放,四周的留白比较多,而且各个元素缩小,很影响美术的最终呈现,那么如何做到下图样式的效果呢
在同目录下绑定如下脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class AutoCanvasScalerMatch : MonoBehaviour
{
public CanvasScaler CanvasScaler;
public RectTransform RectTransform;
public float MinWidth = 1920;
public float MinHeight = 1080;
private void Start()
{
CalculationMatch();
}
#if UNITY_EDITOR
protected virtual void OnRectTransformDimensionsChange()
{
CalculationMatch();
}
#endif
private void CalculationMatch()
{
if (RectTransform != null)
{
//宽高比最小值 最方的时候
float minAspectRatio = MinWidth / MinHeight;
float aspectRatio = (float)Screen.width / (float)Screen.height;
if (aspectRatio < minAspectRatio)
{
CanvasScaler.matchWidthOrHeight = 0.45f;
}
else
{
CanvasScaler.matchWidthOrHeight = 1;
}
}
}
}
上图的效果就实现了,所有子节点的对齐方式要设置成平铺,里面的元素在制作时也需要精细的制作,这里由于东西太多不太好描述,大家自己去做尝试,很简单的