반응형
Sprite Renderer가 항상 Camera에 가장 가깝게 보이도록(Overlay) 구현하기 위해서는 커스텀 쉐이더를 적용해야 한다.
Shader "Custom/SpriteOverlay"
{
Properties
{
[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
_Color ("Tint", Color) = (1,1,1,1)
[MaterialToggle] PixelSnap ("Pixel snap", Float) = 0
[HideInInspector] _RendererColor ("RendererColor", Color) = (1,1,1,1)
[HideInInspector] _Flip ("Flip", Vector) = (1,1,1,1)
[PerRendererData] _AlphaTex ("External Alpha", 2D) = "white" {}
[PerRendererData] _EnableExternalAlpha ("Enable External Alpha", Float) = 0
}
SubShader
{
Tags
{
"Queue"="Transparent"
"IgnoreProjector"="True"
"RenderType"="Overlay"
"PreviewType"="Plane"
"CanUseSpriteAtlas"="True"
}
Cull Off
Lighting Off
ZWrite Off
ZTest Always
Blend One OneMinusSrcAlpha
Pass
{
CGPROGRAM
#pragma vertex SpriteVert
#pragma fragment SpriteFrag
#pragma target 2.0
#pragma multi_compile_instancing
#pragma multi_compile _ PIXELSNAP_ON
#pragma multi_compile _ ETC1_EXTERNAL_ALPHA
#include "UnitySprites.cginc"
ENDCG
}
}
FallBack "Diffuse"
}
Overlay를 적용하기 위해서는 Z-Test를 Always로, Z-Write를 Off로 쉐이더에 작성하면 된다
작성한 이후 빈 Material에 해당 Shader를 붙이고, Sprite Renderer가 달려있는 Object에 해당 Material을 붙여주면 완성
반응형
'개발 > Unity' 카테고리의 다른 글
Sprite Renderer Click Event 구현 (0) | 2021.08.03 |
---|---|
SkinnedMeshRenderer Collider Update (0) | 2021.07.23 |
Unity 업데이트문에서 더블클릭 처리하기 (0) | 2021.05.30 |
폴더 순회하며 깔끔하게 삭제하기 (0) | 2021.05.20 |
Mouse Cursor 바꾸기 (0) | 2021.05.18 |