Unity游戏引擎挖坑记之3d游戏ui屏幕适配方案(二)

时间:2024-04-08 16:07:09

当前示例的ui设计的大小为 750 * 1344的竖屏游戏,咱看任意分辨率的效果如下:

Unity游戏引擎挖坑记之3d游戏ui屏幕适配方案(二)

正式开始介绍:

说说当前Demo遇到的UI分辨率适配问题,

在第一篇的挖坑记中,已经说过如何实现UI界面的添加和飘血文本的添加和地图位置效果的实现了。

PS:补充下咱们飘血的具体细节实现:

1、飘血文字放置于一个设计750 * 1344的Canvas上

Unity游戏引擎挖坑记之3d游戏ui屏幕适配方案(二)

2、飘血文本动态添加(并有缩放、飘动等效果)

飘血文本制作为预制资源,并且添加动画(组件Animation),使用动画编辑器

在第一篇文章中遗留下了几个屏幕分辨率适配的问题如下:

1、ui界面在非设计大小上(750 * 1344 )不能正常显示

2、飘血文字出现被非正常缩放显示(显示非设计大小)

3、血条位置与角色头顶距离拉得很长


那么如何解决上述问题呢?

1、相信细心的童鞋已经看见我的Canvas选择的红框了。

那样设计便可解决屏幕适配问题。

(为什么选择适配以高度(Math = 1)为准则呢?)这里暂时留个伏笔,哈哈。


ps:上述方案虽然能解决通过制作预制资源加载的主界面ui的适配问题,但是,我们动态加载的血条、飘血仍然会有问题。

那么又是如何解决的呢?


经过分析发现,问题的原因是:

2、在我们动态添加预制资源到Canvas上后,我们的资源对象的Scale被进行了缩放,localScale 不是(1,1,1)了。那么造成被缩放的原因是什么呢?

这里也暂且不说,哈哈。

所以解决方案:在动态添加对象到Canvas上后,强制设置该对象父节点的localScale = new Vector3(1, 1, 1);或者你要的比例。

3、血条高度过长问题

根据我们当前适配的高度原则,我们直接获取屏幕的高度与我们设计的 1344高度进行比例换算即可解决。

例如:我的血条在3d角色转化后的坐标的顶部 120位置上。

obj.position.y + 120 * Screen.height / 1344; 即可动态解决任意分辨率高度问题。


时间匆忙,格式不太规范。如果你有更好的方案,欢迎讨论。