Shaders work in editor but not outside editor

I’m trying to load the standard shader from a script onto an object and make it transparent and set the emission color. I was able to get this working in the editor, but no matter what I build to (PC, Web, Android) the shader settings that I saw in the editor do not take place in the final build. There’s no transparency and no emission.

The code I’m using is

rend = go.GetComponent<Renderer>();
rend.material.shader = Shader.Find("Standard");
rend.material.DisableKeyword("_ALPHATEST_ON");
rend.material.EnableKeyword("_ALPHABLEND_ON");
rend.material.EnableKeyword("_EMISSION");
rend.material.SetColor("_EmissionColor", Color.white);
rend.material.SetFloat("_Mode", 2);
rend.material.SetFloat("_Glossiness", 0);
rend.material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha);
rend.material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
rend.material.SetInt("_ZWrite", 0);
rend.material.renderQueue = 3000;

I think you have to manually include the shader variants in the build. Standard shader uses:

#pragma shader_feature

“If none of the used materials use a particular variant, then it is not included into the build.”

To force specific shader variants into the build you can setup a small scene where you have like 1 primitive with a material for each variant you want (or play the game until your material(s) created by script is visible).

Then go in Edit / Project Settings / Graphics, at the bottom you can create a ShaderVariantCollection with the button ‘Save to asset…’

A specific variant can be added manually in the inspector by selecting a ShaderVariantCollection asset but I would not recommend it for Standard shader.

Finally add your new collection in Preload Shaders array in the Graphic Settings.
58765-screenshot-2015-11-25-14-07-45.jpg

More informations can be found here: Unity - Manual: Shader variant collections

Also, take a look at #pragma multi_compile. All of the variants that stem from it are automatically included in build. Just be careful it works a subtly differently from shader_feature. You need to specify the off variant as well as the on using an additional underscore. As in:

#pragma multi_compile _ SOME_FEATURE_ON”