Unity 关于图片的Pixels Per Unit

今天看到一篇讲Sprite的九宫格拉伸。在文章最后作者遇到一个坑。就是他调整了Canvas Scaler的Reference Pixels Per Unit,调整为1,没有改回默认100,导致九宫格不被拉伸的区域细的看不见。

这个问题和Unity显示Sprite大小的方式有关。

我们在设置图片的时候Pixels Per Unit会默认设置为100。这个代表一个Unit单位里可以显示100个像素。 (Pixels Per Unit简称PPU)

在Canvas Scaler上有Reference Pixels Per Unit属性。(Reference Pixels Per Unit简称RPPU)

Unity在显示Sprite的时候会根据这两个值来进行计算, UI大小 = 原图大小(Pixels) / (Pixels Per Unit / Reference Pixels Per Unit)

用我的头像演示一下。PPU为100,RPPU也为100,(PPU/RPPU)为1,我们的图片大小会保持原来大小,我们使用Set Native Size,Unity会自动将Image设置为图片的匹配大小,image的大小为640*640;

 将PPU设置为200,再次点击匹配图片,image大小变成了320*320

 我们自己来计算一遍。

 我们原本的图片长高都缩小了一半。那如果反过来PPU=100,RPPU=200

我们计算的结果是UI的大小变成了1280,变大了一半。我们到Unity操作一下验证结果

结果正确。

结论:PPU/RPPU的比值为1,为原图大小,大于1会缩小,小于1会放大

我们现在回到那位作者的问题,我们使用九宫格就是只拉伸中心区域,周围保持不变。所以周围的八个格子的长宽会受到影响。

在这里换一个图片,方便展示,因为影响UI大小是最后的比值,我在这里只修改PPU

 

 

 UI大小变大之后,视觉上边框也变的更加粗了,反之,边框变得更细了。

遇到拉伸后,周围的过大,或者过小,我们可以去调整一下图片的PPU,不建议去改Canvas Scaler的RPPU,改完可能会影响Canvas里的所有UI。还是单独去设置某一个图片的PPU。

参考资料(第一个是讲九宫格那篇,第二篇是Unity官网技术专栏里专门细说PPU的)

http://t.csdn.cn/8EgmD

https://developer.unity.cn/projects/609773eeedbc2a0021af70fa

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值