【Unity】AtlasにしたSpriteを使って謎の線が表示された場合は「Pixel Snap」を有効にしよう

DEVELOP, Unity

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 の項目を有効にするとゴミの様な謎の線が消えます。

Posted by kazupon