Changing Colors

I have a object called shield childed to my space craft on the chiled is a shader called Rim it has a color selecter called Color of the rim. Is there any way I can axcess this color choice via C# script. I would like to make it so that I can change its color as the ship takes damage.

Here is the rim shaders code and I would like to axcess it from a script on my ship wich is the top object the parent of the shield.

Shader "Rim"
_RimPower("Power of the rim", Range(0,1) ) = 0.5
_RimColor("Color of the rim", Color) = (1,0.7342659,0,1)
_AlphaRimPower("_AlphaRimPower", Range(0,10) ) = 0
_ShieldTexture("_ShieldTexture", 2D) = "black" {}
_TimeSpeed("_TimeSpeed", Float) = 0
_ShieldTex2("ShieldTex2", 2D) = "black" {}



Cull Back
ZWrite On
ZTest LEqual
ColorMask RGBA
Blend SrcAlpha OneMinusSrcAlpha

#pragma surface surf BlinnPhongEditor  vertex:vert
#pragma target 2.0

float _RimPower;
float4 _RimColor;
float _AlphaRimPower;
sampler2D _ShieldTexture;
float _TimeSpeed;
sampler2D _ShieldTex2;

			struct EditorSurfaceOutput {
				half3 Albedo;
				half3 Normal;
				half3 Emission;
				half3 Gloss;
				half Specular;
				half Alpha;
				half4 Custom;
			inline half4 LightingBlinnPhongEditor_PrePass (EditorSurfaceOutput s, half4 light)
half3 spec = light.a * s.Gloss;
half4 c;
c.rgb = (s.Albedo * light.rgb + light.rgb * spec);
c.a = s.Alpha;
return c;


			inline half4 LightingBlinnPhongEditor (EditorSurfaceOutput s, half3 lightDir, half3 viewDir, half atten)
				half3 h = normalize (lightDir + viewDir);
				half diff = max (0, dot ( lightDir, s.Normal ));
				float nh = max (0, dot (s.Normal, h));
				float spec = pow (nh, s.Specular*128.0);
				half4 res;
				res.rgb = _LightColor0.rgb * diff;
				res.w = spec * Luminance (_LightColor0.rgb);
				res *= atten * 2.0;

				return LightingBlinnPhongEditor_PrePass( s, res );
			struct Input {
				float2 uv_ShieldTexture;
float2 uv_ShieldTex2;
float3 viewDir;


			void vert (inout appdata_full v, out Input o) {
float4 VertexOutputMaster0_0_NoInput = float4(0,0,0,0);
float4 VertexOutputMaster0_1_NoInput = float4(0,0,0,0);
float4 VertexOutputMaster0_2_NoInput = float4(0,0,0,0);
float4 VertexOutputMaster0_3_NoInput = float4(0,0,0,0);


			void surf (Input IN, inout EditorSurfaceOutput o) {
				o.Normal = float3(0.0,0.0,1.0);
				o.Alpha = 1.0;
				o.Albedo = 0.0;
				o.Emission = 0.0;
				o.Gloss = 0.0;
				o.Specular = 0.0;
				o.Custom = 0.0;
float4 Tex2D0=tex2D(_ShieldTexture,(IN.uv_ShieldTexture.xyxy).xy);
float4 Tex2D1=tex2D(_ShieldTex2,(IN.uv_ShieldTex2.xyxy).xy);
float4 Divide0=Tex2D0 / Tex2D1;
float4 Multiply1=Divide0 * _RimColor;
float4 Fresnel0_1_NoInput = float4(0,0,1,1);
float4 Fresnel0=(1.0 - dot( normalize( float4( IN.viewDir.x, IN.viewDir.y,IN.viewDir.z,1.0 ).xyz), normalize( ) )).xxxx;
float4 Pow0=pow(Fresnel0,_RimPower.xxxx);
float4 Multiply0=_RimColor * Pow0;
float4 Fresnel1_1_NoInput = float4(0,0,1,1);
float4 Fresnel1=(1.0 - dot( normalize( float4( IN.viewDir.x, IN.viewDir.y,IN.viewDir.z,1.0 ).xyz), normalize( ) )).xxxx;
float4 Pow1=pow(Fresnel1,_AlphaRimPower.xxxx);
float4 Saturate0=saturate(Pow1);
float4 Master0_1_NoInput = float4(0,0,1,1);
float4 Master0_3_NoInput = float4(0,0,0,0);
float4 Master0_4_NoInput = float4(0,0,0,0);
float4 Master0_7_NoInput = float4(0,0,0,0);
float4 Master0_6_NoInput = float4(1,1,1,1);
o.Albedo = Multiply1;
o.Emission = Multiply0;
o.Alpha = Saturate0;

				o.Normal = normalize(o.Normal);
	Fallback "Diffuse"

If you put this on the object with the Rim shader it should work:

renderer.material.color =; // for example

If that doesn’t work you may need to post the Rim shader code. The actual name of the color would be in there.

This should change the rim color to red, assuming it’s added to a script that’s on the same object:


If the script’s on a different object, you have to use something like GetComponent to retrieve the renderer first. (Sorry for no specifics, but I only code in .js)