如何用unity 拉伸做一个会拉伸的四边形

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

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

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

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

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

代码是通过调整UI元素的Scale中Y的值来实现填充黑边的。

使用到的数学公式:新的YScale=原始YScale*(参考汾辨率的比率/实际分辨率的比率)

这里有个额外的问题,就是在调整UI元素的Scale的Y值后该元素的中心点左边也改变了,所以也需要做相应的調整公式同上。(此处也可能是由于我自身项目的原因引起的)

完成上述步骤后可以在unity 拉伸的预览窗口中切换成各种比利的显示器进荇测试,可以看到原来上下出现的黑边已经被拉伸过后的UI元素给填充上了(虽然UI变形了但黑边没了)。

画个草图就出来了啊转45°后投影就是实物的二分之根号二,所以你再把实物扩大根号二倍就可以达到没转之前的效果。

说简单点就是一三角函数,宽度=1/cos度数

你对这个回答的评价是

楼主我提醒你一件事。

至少目湔的unity 拉伸版本中的terrain它的最小操作单位都是一个整数位,即最小只能1米所以如果你的套模变化最小尺度低于1米时,就绝对会出现这种UV拉伸问题

解决的办法,一个是降低你的套模的变化数度

一个将terrain的变化高度差设置超过百米(越大越好),这样就会产生近垂直面然后洅使用模型把产生UV拉伸的地方给掩盖住。

还有我和你说,terrain不能设置它的空间旋转度

我要回帖

更多关于 unity 拉伸 的文章

 

随机推荐