- Home /
Cannot select gameobjects in editor in 2D view using custom sprite shader
Hi, I have a weird issue where I cannot select a set of sprites that have a custom sprite diffuse shader on them by clicking on the in the editor. If I select them in the inspector or drag select a box over them I can select them, just not using a single click.
It seems to be though that if I swap to 3D mode and click on the back of them, I can select them fine, I just cant select them in 2D mode (it rotates the view to face the front).
If I change back to the standard diffuse sprite shader, I can select them fine.
Any ideas why a shader prevents selecting an object in the editor?
Here is the shader code for a bumped, diffuse sprite with shadows:
Shader "Sprites/Bumped Diffuse both sides with Shadows"
{
Properties
{
[PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {}
_BumpMap("Normalmap", 2D) = "bump" {}
_Color("Tint", Color) = (1,1,1,1)
[MaterialToggle] PixelSnap("Pixel snap", Float) = 0
_Cutoff("Alpha Cutoff", Range(0,1)) = 0.5
}
SubShader
{
Tags
{
"Queue" = "Transparent"
"IgnoreProjector" = "True"
"RenderType" = "TransparentCutOut"
"PreviewType" = "Plane"
"CanUseSpriteAtlas" = "True"
}
LOD 300
// Render back faces first
Cull Front
Lighting On
ZWrite Off
Fog{ Mode Off }
CGPROGRAM
#pragma surface surf Lambert alpha vertex:vert addshadow alphatest:_Cutoff
#pragma multi_compile DUMMY PIXELSNAP_ON
sampler2D _MainTex;
sampler2D _BumpMap;
fixed4 _Color;
float _ScaleX;
struct Input
{
float2 uv_MainTex;
float2 uv_BumpMap;
fixed4 color : COLOR;
};
void vert(inout appdata_full v, out Input o)
{
#if defined(PIXELSNAP_ON) && !defined(SHADER_API_FLASH)
v.vertex = UnityPixelSnap(v.vertex);
#endif
float3 normal = v.normal;
v.normal = float3(0,0,-1);
v.tangent = float4(1, 0, 0, 1);
UNITY_INITIALIZE_OUTPUT(Input, o);
o.color += _Color;
}
void surf(Input IN, inout SurfaceOutput o)
{
fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * IN.color;
o.Albedo = c.rgb;
o.Alpha = c.a;
o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
}
ENDCG
// Now render front faces first
Cull Back
Lighting On
ZWrite Off
Fog{ Mode Off }
CGPROGRAM
#pragma surface surf Lambert alpha vertex:vert addshadow alphatest:_Cutoff
#pragma multi_compile DUMMY PIXELSNAP_ON
sampler2D _MainTex;
sampler2D _BumpMap;
fixed4 _Color;
float _ScaleX;
struct Input
{
float2 uv_MainTex;
float2 uv_BumpMap;
fixed4 color : COLOR;
};
void vert(inout appdata_full v, out Input o)
{
#if defined(PIXELSNAP_ON) && !defined(SHADER_API_FLASH)
v.vertex = UnityPixelSnap(v.vertex);
#endif
float3 normal = v.normal;
v.normal = float3(0,0,1);
v.tangent = float4(1, 0, 0, 1);
UNITY_INITIALIZE_OUTPUT(Input, o);
o.color += _Color;
}
void surf(Input IN, inout SurfaceOutput o)
{
fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * IN.color;
o.Albedo = c.rgb;
o.Alpha = c.a;
o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
o.Normal.z *= -1;
}
ENDCG
}
Fallback "Transparent/Cutout/Diffuse"
}
Your answer
Follow this Question
Related Questions
Make Sprite-Diffuse shader work on mesh renderer? 0 Answers
Sprite Deform Diffuse Shader 0 Answers
How to make sprite to react to light? 1 Answer
Making shader's first pass light sensitive (2D) 0 Answers
Sprite Previews not displaying! 0 Answers