- Home /
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;
Answer by helarts · Nov 25, 2015 at 01:16 PM
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.
More informations can be found here: http://docs.unity3d.com/Manual/OptimizingShaderLoadTime.html
Answer by Icodebot · Mar 15, 2017 at 09:05 PM
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"
Your answer
![](https://koobas.hobune.stream/wayback/20220612050301im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Why when changing the doors colors it's not changing anything ? 1 Answer
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
Shader.Find() equivalent for Compute Shaders? 2 Answers
Awesome Bump shader in Unty? 0 Answers