当前位置:   article > 正文

「Unity3D」场景中的距离单位Unit与相关设置PixelsToUnits、PixelsPerUnit

「Unity3D」场景中的距离单位Unit与相关设置PixelsToUnits、PixelsPerUnit

GameObject在场景的位置Position,并没有明确是什么具体单位——如:Transform的x、y、z,或RectTransform的PosX、PosY、PosZ。而RectTransform在面板上显示的Width和Height,也没有具体单位,其实并不是像素。

事实上,通过3ds Max的模型导入Unity,会发现Unity的默认单位是米,也就是一个场景中的unit都是以米为具体单位。

这就涉及到一个问题,即如何按照比例显示像素?或说如何显示2D图片的大小?(3D的图片是以纹理形式蒙皮在模型上的,尺寸距离以模型的顶点为基准)

Texture

那么,在Texture导入的时候,如果是Sprite(2D and UI)就会有一个设置,即PixelsToUnits——也就是多少像素为一个Unity的单位unit,或说1米。

如图显示,默认是100个像素为1米,也就是100个像素,对应面板上的xyz / Pos.xyz / Width / Height的1——更大数值图片更小,更小数值图片更大,这是Sprite Renderer的情况。

例如,一个图片1024x1024,PixelsToUnits是100,则这个图片在场景中的width与height就是10.24——会显得很小;如果PixelsToUnits是1,则width与height就正好是1024——会显得很大。

Image

在Image中,可以设置一个Sprite,这时是将Sprite塞入Image的容器中,所以Sprite越大像素密度越大,则显示越小(被压缩了),Sprite越小像素密度越小(被拉伸了),则显示越大——这是Sliced Type情况。

但如果是Tiled Type,则是Sprite平铺在Image里面,所以Sprite越大,则只能铺一部分(显示不全),Sprite越小,则可以铺很多块(显示很多个小的Sprite)。

Canvas Scaler

这个Canvas Scaler组件,可以缩放整个画布,那么画布之上的像素也会受其影响,有两个设置,即:DynamicPixelsPerUnit与ReferencePixelsPerUnit——前者缩放Text(TextMeshPro不受影响),后者缩放Sprite——数值越大显示越小,数值越小显示越大。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/886659
推荐阅读
相关标签
  

闽ICP备14008679号