【Unity 100个实用小技巧】 UI分辨率适配
UI分辨率适配
学习实际项目中,分辨率适配的方案,基础版本。
以下适配以720*1680为基准适配
具体操作
- Canvas Scaler的Screen Match Model 设置为Match Width Or Height,Match设置为0
这个设置,是以宽为基准进行分辨率适配
- 其实在这么设置以后就基本已经完成分辨率适配了,但是还有一个问题
问题
- 描述:序号1设置了以最下边为基准,但是我的背景图是1680,这种就导致了超出了背景图边界。
- 解决方案:在Canvas下有一个RectTransform的物体,控制他的offsetMin和offsetMax可以解决这个方案
- 设置完的结果如下
- 从图上看,对于1680意外的可以用黑边补齐,制作UI面板时候,就可以随意的使用锚定的方式,而不会影响显示效果,代码如下:
public class MyTest : MonoBehaviour
{private RectTransform m_RectTransform;private float m_DesignWidth = 720;private float m_DesignHeight = 1280;private void Awake(){m_RectTransform = GetComponent<RectTransform>();}// Start is called before the first frame updatevoid Start(){//实际分辨率宽高为1290*3500,通过计算得出设计分辨率为1953float h = 720 * Screen.height / Screen.width; //Canvas的高Debug.LogError(h);if (h>1680){// 因为我假设的背景分辨率是1680,所以 会多出差值,//然后差值平分,在分别给offsetMin和offsetMax设置float delta = h - 1680;float halfDelta = delta / 2;m_RectTransform.offsetMin = new Vector2(0, halfDelta);m_RectTransform.offsetMax = new Vector2(0, -halfDelta);}}// Update is called once per framevoid Update(){}
}
提示
为个人理解,如有不对请指出,随时修订
更新
2024-10-12 初次发布