具有白色透明区域的统一精灵在场景边界处显示白线

Unity sprite with white transparent area shows whit line at border in scene

我这里有这个精灵,它是角色的一部分。正如你可能看到的那样,它在中下部有一个白色区域,是半透明的。

但是当放入场景中的精灵渲染器时,它突然在黑色轮廓和白色区域相交处显示这条白线:

在导入设置中,选中“Alpha 透明”。我试着弄乱纹理 MaxSize,它使线条更细但没有摆脱它。 精灵渲染器有material Sprite-Unlit-Default,我也试过Sprite-Default。

我该如何摆脱它?

我正在使用 Unity 2019.4.35f1 LTS 和 URP。 该图像是使用 ClipStudio 创建的,并导出为 PNG 以导入到 Unity 中。这是唯一存在该问题的图像。我们已尝试重新导出但没有成功。

我发现了这个相关问题:Incorrect white matte behind antialiasing on imported sprites 但解决方案似乎不适用于我的问题。

谢谢!

我在Unity中看了一下贴图:

  • 原始纹理非常大,即 3000x5000,几乎是透明的。但实际的嘴巴纹理只有大约 210x145 像素小。为避免缩放问题,最大尺寸至少需要 8192 像素。
  • 您应该裁掉纹理的透明度,这样纹理将只有大约 210x145 像素。

白色像素的实际问题可以通过使用“点”作为“过滤模式”而不是“双线性”来解决。

如果您想使用“双线性”滤镜模式,您还可以在 Photoshop(或类似软件)中将图像放大 200% 至 420x290 像素。

你有这个问题,因为使用双线性过滤,GPU 将像素 A(黑色和不透明)与 B(白色和几乎透明)混合到新的不需要的颜色(浅灰色 - half-transparent).

更新 1:

您还可以将 Sprite 配置为具有“紧”的 MeshType,并将 Sprite 放入 SpriteAtlas 中,然后 SpriteAtlas 纹理大小将为 256x256 像素,Unity 将保持相对位置。