unity导入一张图片,将图片类型设为Sprite,(点击SpriteEditor可对其切割九宫格)
——发现图片导入设置中有【Pixels Per Unit】
在场景中新建一个Image,默认宽100高100比例1
——发现Canvas设置中有【Reference Pixels Per Unit】
——发现Image设置中有【Pixels Per Unit Multiplier】
先上结论:
图片最终的 PPU =【Pixels Per Unit】×【Pixels Per Unit Multiplier】÷【Reference Pixels Per Unit】
<hr/>什么是unit:Unity使用“unit”作为长度单位,1 unit可以是任意的,根据你的需求自定义
如果你制作Tile based games(棋盘格游戏),那么1 Unit = 1 Tile (eg. if a tile is 64 pixel large, then 64 would be the Pixels per Unit)
如果你制作像素游戏,那么1 Unit = 1 Pixel
如果你制作物理风格的游戏,那么1 unit=1 meter。如果人物角色身高 2 units,人物角色的图片分辨率1000×1000,那么 Pixels per Unit=1000/2=500
因此你需要先确定图片在场景中的尺寸(多少unit),然后再根据图片的分辨率计算出PPU值。
比如,你为一张“树”的Image预设了【Width=2,Height=2】(scale=1),树的图片分辨率500×1000,那么可计算得它的 Pixels per Unit = 500÷2 = 250
然而,对于有些图片,我们不能预设它在场景中的尺寸,比如下面这张使用了九宫格切割的图片——它的四个角块在Image缩放时将保持不变,只有中央区域会响应缩放——它可以自由拉伸宽度和高度,同时保持四个角块不变,常用于制作背景板、坐标轴
由于蓝色区域是可被缩放的,假设蓝色区域被压缩至零,那么这张箭头图片就剩下四个角块,即它的最小分辨率是728×630,这意味着【Pixels Per Unit】也存在一个最小值。
我们这个例子里,默认图片的尺寸为2 units,所以728×630除以2就是364×315,取较小值,即315是【Pixels Per Unit】的最小值,此时图案呈现的是只剩下四个角块的样子。
设置【Pixels Per Unit】小于315是没有意义的,因为蓝色区域已经被压缩至零,图案不可能更小了。严格的说,应该是【Pixels Per Unit】与【Pixels Per Unit Multiplier】的乘积再除以【Reference Pixels Per Unit】后的值如果小于315,是没有意义的。
请具体解释一下什么叫“没有意义”:
①小于315的值对应的图案,都和值等于315时的图案一样,即只剩四个角块的样子
②如果这个值小于315很多,意味着你需要很大的【Width,Height】才能看到九宫格图案的缩放效果
我们可以根据角块的pixel和unit去计算PPU,但是这样太麻烦了,只要图片能正常显示,PPU并不需要是一个精确计算的结果——当你无法在你预设的【Width,Height】附近呈现正确的九宫格图片时,原因是PPU值偏小,你可以尝试调整【Pixels Per Unit】【Pixels Per Unit Multiplier】【Reference Pixels Per Unit】这3个参数,使它变大 附:2D游戏中的分辨率设置