禁用压缩后30x19像素PNG在SpriteRenderer中仍显过度压缩,如何修复?
问题:30x19尺寸PNG通过SpriteRenderer显示时出现过度压缩效果
游戏画面显示效果

注:截图中Scale设为2x,改为1x后无任何变化
原始资源

当前相关设置
- Project Settings -> Anti Aliasing: Disabled (Ultra - Very Low)
- Sprite Pixels Per Unit: 19
- Sprite Filter Mode: Point (no filter)
- Sprite Compression: None
- Camera Size: 5
Sprite设置

Sprite Renderer设置

Camera设置

问题排查及解决方法
- 修正Sprite像素单位匹配问题
你的资源尺寸是30x19,当前设置的Pixels Per Unit为19,导致宽度对应约1.578个单位。非整数单位的Sprite在渲染时,即使使用Point Filter,也会因为像素无法和屏幕像素完美对齐,出现类似压缩的模糊效果。
- 解决:将Sprite的Pixels Per Unit改为1,让每个像素对应1个单位,确保渲染时像素完全对齐。
- 调整Sprite网格类型
从Sprite设置截图看,如果Mesh类型是Tight,小尺寸Sprite可能会因顶点精简导致边缘失真。
- 解决:将Sprite的Mesh Type改为
Full Rect,使用完整矩形网格渲染,避免边缘细节丢失。
- 检查纹理导入的额外设置
虽然已设置Compression为None,但需确认以下两点:
- 关闭
Generate Mip Maps:小尺寸Sprite开启Mip Maps会导致渲染时调用低分辨率层级,出现模糊。 - 确认Format为
Truecolor (RGBA 32 bit):若使用16位或其他压缩格式,会损失画质。
- 校准Camera与屏幕分辨率匹配
Camera Size设为5,意味着视口高度为10单位。若Game视图分辨率与资源尺寸不成整数倍,会导致Sprite被非等比拉伸或像素不对齐。
- 解决:调整Game视图分辨率为资源尺寸的整数倍,或修改Camera Size,确保Sprite在视口中的渲染像素与屏幕像素一一对应。
内容的提问来源于stack exchange,提问作者Umut Çağdaş Coşkun
相关产品推荐
相关产品推荐

