【Unity】AtlasにしたSpriteを使って謎の線が表示された場合は「Pixel Snap」を有効にしよう
UIに設定しているSpriteをアトラス化すると、Spriteの境界に謎の線が表示されることがあります。これはSpriteの位置がfloatであるのに対してスクリーンのピクセルはint なため位置ずれが発生し起こります。これを解決するためにUnityではPixel Snap機能があります。シェーダーコードを少し修正するだけで対応できます。
シェーダーコードの修正
- プロパティにPixelSnap 有効、無効フラグを追加する
[MaterialToggle] PixelSnap ("Pixel snap", Float) = 0
- pragma 追加
#pragma multi_compile _ PIXELSNAP_ON
- 頂点シェーダーにUnityPixelSnap コードを挿入する
#ifdef PIXELSNAP_ON
OUT.pos = UnityPixelSnap (OUT.pos);
#endif
これでPixelSnap の項目を有効にするとゴミの様な謎の線が消えます。