Hide
ShaderKeyword

Select a shader keyword from a shader, material or renderer. (Requires Unity 2021.2+)

Parameters:

  • [Optional] string name: the target. Be a property or a callback that returns a shader, material or renderer. When omitted, it will try to get the Renderer component from the current component.
  • [Optional] int index=0: which material index to use when the target is a Renderer.
[ShaderKeyword] public string shaderKeywordString; [ShaderKeyword(0)] public string shaderKeywordIndex; [Separator("By Target")] [GetComponent] public Renderer targetRenderer; [ShaderKeyword(nameof(targetRenderer))] public string shaderKeywordRenderer; private Material GetMat() => targetRenderer.sharedMaterial; [ShaderKeyword(nameof(GetMat))] public string shaderKeywordMat; private Shader GetShader() => targetRenderer.sharedMaterial.shader; [ShaderKeyword(nameof(GetShader))] public string shaderKeywordShader;

image

It works with ShowInInspector

[ShowInInspector, ShaderKeyword] private string ShowShaderKeywordString { get => shaderKeywordString; set => shaderKeywordString = value; }

It works with ShowInInspector/Button parameters & return value

[ShowInInspector] [ShaderParam] private string ShowShaderParam([ShaderParam] string shaderS) => shaderS; [Button] [ShaderParam] private string ShowShaderParam([ShaderParam] string shaderS) => shaderS;