当前示例的ui设计的大小为 750 * 1344的竖屏游戏,咱看任意分辨率的效果如下:
正式开始介绍:
说说当前Demo遇到的UI分辨率适配问题,
在第一篇的挖坑记中,已经说过如何实现UI界面的添加和飘血文本的添加和地图位置效果的实现了。
PS:补充下咱们飘血的具体细节实现:
1、飘血文字放置于一个设计750 * 1344的Canvas上
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; 即可动态解决任意分辨率高度问题。
时间匆忙,格式不太规范。如果你有更好的方案,欢迎讨论。