你的位置:首页 > 软件开发 > ASP.net > Unity3D去掉全屏时的屏幕黑边

Unity3D去掉全屏时的屏幕黑边

发布时间:2016-04-11 17:00:04
给全屏后不在乎拉伸变形仍想让画面占满屏幕的朋友,网上搜了一上午,实在是没有相关的资料,只能自己琢磨了。使用Canvas Scaler在全屏后Unity虽然会为我们自动拉伸UI,但拉伸后仍然保持我们在Unity中设置的高宽比。屏幕中的黑边需要通过代码来对UI的内容进行拉伸填充。下面 ...

给全屏后不在乎拉伸变形仍想让画面占满屏幕的朋友,网上搜了一上午,实在是没有相关的资料,只能自己琢磨了。

使用Canvas Scaler在全屏后Unity虽然会为我们自动拉伸UI,但拉伸后仍然保持我们在Unity中设置的高宽比。屏幕中的黑边需要通过代码来对UI的内容进行拉伸填充。

下面是我的测试环境:

Unity3D 5.3.4

Win 10 64bit

 

测试中我Unity设置成了自动根据屏幕宽度进行拉伸,这样需要调整UI的高度来填充画面上下出现的黑边了。

Unity3D去掉全屏时的屏幕黑边

开发中使用的分辨率是16:9的,但实际发布运行后肯能会在5:3,16:10甚至是2:1的显示器上运行,这样在根据上面的设置,unity会自动横向拉伸,但在画面的上下会出现黑边。

把下面的代码挂在Camera或者Canvas上的脚本的Start函数里,UI便会自动上下拉伸把画面上下部分的黑边给填充掉。

    StandarRatio = new Vector3[RechangeForms.Length];    float referenceRatio = 16f/9f;    float currentRatio =( (float)Screen.width / (float)Screen.height);    for (int i = 0; i < RechangeForms.Length; i++)    {      StandarRatio[i] = RechangeForms[i].transform.localScale;      float yFactor = StandarRatio[i].y * (referenceRatio / currentRatio);      float posYFactor = RechangeForms[i].transform.position.y * (referenceRatio / currentRatio);      RechangeForms[i].transform.DOScaleY(yFactor, 0.0f);      RechangeForms[i].transform.DOMoveY(posYFactor, 0.0f);    }  

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:Unity3D去掉全屏时的屏幕黑边

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录