Unity游戏开发中UGUI的屏幕适配方案
创作时间:
作者:
@小白创作中心
Unity游戏开发中UGUI的屏幕适配方案
引用
CSDN
1.
https://blog.csdn.net/qilin598866753/article/details/139690329
游戏开发的过程中,UI都是在设计分辨率下出效果图,开发者需要适配各种不同的屏幕分辨率。本文介绍商业化项目中使用的屏幕适配方式,实验时UI设计分辨率为1080*1920。
1. 设置CanvasScaler
前两个设置没什么好说的,主要是第三个选项Screen Match Mode得设置为Expand。
Expand模式会将 UI 缩小到能在屏幕中显示完所有的UI元素。
我们可将Game视图分辨率设置为1080 * 1600(窄屏),来看Shrink模式和Expand模式的效果:
Shrink模式,部分UI超出屏幕能显示的区域:
Expand模式,所有的UI元素都在屏幕显示区域内:
使用Expand模式能将所有的UI元素显示在屏幕内,但是会引出一个新的问题,即背景图片无法铺满整个屏幕,这是不能接受的,由此我们进入下一步背景图片适配。
2. Expand模式下的背景图片适配
由于Expand模式下导致背景图片过度缩小,我们得再次修正其大小,以铺满我们整个屏幕。
我们需要添加在背景图片上添加一个脚本UIBgAdapt,放大尺寸来铺满这个屏幕:
UIBgAdapt组件请参考附件,核心为:
//设置图片铺满整个屏幕
float expandScaleFactor = Mathf.Min(screenSize.x / inst.ImageWidth, screenSize.y / inst.ImageHeight);
float shrinkScaleFactor = Mathf.Max(screenSize.x / inst.ImageWidth, screenSize.y / inst.ImageHeight);
float resetScale = shrinkScaleFactor / expandScaleFactor; //shrinkScaleFactor为我们想要的缩放,expandScaleFactor为我们默认设置的缩放
inst.m_Transform.localScale = new Vector3(resetScale, resetScale, 1);
UGUI也给我们提供了一个组件AspectRatioFitter,使用它可以达到同样效果:
不同分辨率的适配就此结束。
3. 屏幕安全区域适配
如果目标设备是刘海屏,则红色区域的内容不能显示出来(四个绿色的块锚住屏幕四个角):
因此我们需要修改RectTranform的Height(如果是横屏游戏修改Width)
在GameObject上添加UISafeArea组件:
实验时在组件上勾选Is Safe Area,可看到四个绿色的方块都在安全区域内显示了。
UISafeArea组件请参考附件,核心为:
private void applySafeArea()
{
if (this.isSafeArea) //如果是刘海屏
{
Vector2 sizeDelta = this.m_ParentRectTransform.sizeDelta;
//sizeDelta.x *= 0.9f; //横屏游戏开启这个
sizeDelta.y *= 0.9f;
this.m_RectTransform.sizeDelta = sizeDelta;
}
else
{
Vector2 sizeDelta = this.m_ParentRectTransform.sizeDelta;
this.m_RectTransform.sizeDelta = sizeDelta;
}
}
热门推荐
徒步野长城——箭扣长城
孩子什么都懂,但就是不愿意开口说话,该怎么办呢?
复仇者联盟:漫威宇宙的超级英雄集结
雷神的神话起源:从北欧到复仇者联盟
配音工作室:数字化时代的创业新宠
全国首例AI声音侵权案胜诉:配音演员维权新希望
配音员必修课:从日常到应急,全方位护嗓指南
端午将至,“屈原家宴”带你品味宜昌传统美食
宜昌老渔村:信息不足,建议选择其他美食主题
一个人最了不起的能力:沟通力
【原】强者思维:让你越混越好的识人术
北京电影学院:配音教育的权威之选
为引进人才及留学生,新加坡政策大更新!
新加坡总人口首次突破600万人《新加坡2024人口简报》分析
“飞蝶鸣鸠”:陆游笔下的早春与闲愁
陆游笔下的春天:飞蝶鸣鸠都比你快乐?
新加坡人口问题为何成难题?李光耀无奈表示:连我女儿都不想生育
为什么新加坡是一个华人国家?
激光厅、普通厅、巨幕厅、全景声厅的区别,哪个好?
激光厅、普通厅、巨幕厅、全景声厅的区别,哪个好?
一统江山:司马炎巧布棋局终成帝业
晋武帝:司马炎
一统江山:司马炎巧布棋局终成帝业
周末家庭红烧带鱼DIY挑战:从选购到烹饪的完整攻略
冬季滋补首选:白带鱼的营养与健康益处
家常炖带鱼:一学就会的美味带鱼烹饪攻略
斗罗大陆武魂修炼,普通人也能逆袭成大神?
斗罗大陆:武魂修炼误区与进阶技巧全解析
斗罗大陆:武魂修炼的终极奥秘
秋冬运动后如何正确拉伸缓解肌肉酸痛?