keyword | 要启用的 LocalKeyword。 |
keyword | 要启用的 LocalKeyword 的名称。 |
为该材质启用本地着色器关键字。
着色器关键字决定 Unity 使用哪些着色器变体。有关使用 本地着色器关键字 和 全局着色器关键字 以及它们如何交互的信息,请参阅 使用 C# 脚本的着色器关键字。
如果您传入 LocalKeyword,而它在该材质使用的着色器的 Shader.keywordSpace 中不存在,则此函数无效。如果您传入字符串,而具有该 name
的 LocalKeyword 在该材质使用的着色器的 Shader.keywordSpace 中不存在,则此函数无效。
采用字符串作为参数的此函数版本比采用 LocalKeyword 的版本速度慢。如果您多次调用此函数,最佳实践是创建一个 LocalKeyword 结构,对其进行缓存,并使用它。
注意:LocalKeyword
特定于单个 Shader 或 ComputeShader 实例。您不能将其与其他 Shader 或 ComputeShader 实例一起使用,即使它们声明了具有相同名称的关键字。
以下示例创建了一个名为 EXAMPLE_FEATURE_ON
的 LocalKeyword
结构,并对其进行了缓存。它提供了启用和禁用它的函数。
using UnityEngine; using UnityEngine.Rendering;
public class MaterialKeywordExample : MonoBehaviour { public Material material; private LocalKeyword exampleFeatureKeyword;
void Start() { // Get the instance of the Shader class that this material uses var shader = material.shader;
// Create and cache the LocalKeyword exampleFeatureKeyword = new LocalKeyword(shader, "EXAMPLE_FEATURE_ON"); }
public void EnableExampleFeature() { material.EnableKeyword(exampleFeatureKeyword); }
public void DisableExampleFeature() { material.DisableKeyword(exampleFeatureKeyword); } }