Shader.keywordSpace
Declaration
public Rendering.LocalKeywordSpace keywordSpace;Описание
Локальное пространство ключевых слов этого шейдера.
Ключевые слова Shader определяют, какие варианты Shader использует Unity. Информацию о работе с ключевыми словами локального Shader и глобального Shader и о том, как они взаимодействуют, см. в Использование ключевых слов Shader со скриптами C#.keywordSpace содержит:
- Все ключевые слова объявлены в исходном файле.
- Все ключевые слова, объявленные в зависимостях этого исходного файла. Это означает все шейдеры, которые включены через Резервная команда, и все пропуска, которые включены через UsePass команда.
- Все встроенные ключевые слова.
Это свойство описывает лишь пространство всех локальных ключевых слов для этого шейдера. О том, как изменить состояние какого-либо ключевого слова, см. Material.EnableKeyword и Material.DisableKeyword.
using UnityEngine; using UnityEngine.Rendering; // This example iterates over the local shader keywords in the local // keyword space for a graphics shader. It determines whether each // keyword is overridden by a global shader keyword and prints its // state. public class KeywordExample : MonoBehaviour { public Material material; void Start() { CheckShaderKeywordState(); } void CheckShaderKeywordState() { // Get the instance of the Shader class that the material uses Shader shader = material.shader; // Get all the local keywords that affect the Shader LocalKeywordSpace keywordSpace = shader.keywordSpace; // Iterate over the local keywords foreach (LocalKeyword localKeyword in keywordSpace.keywords) { // If the local keyword is overridable, // and a global keyword with the same name exists and is enabled, // then Unity uses the global keyword state if (localKeyword.isOverridable && Shader.IsKeywordEnabled(localKeyword.name)) { Debug.Log("Local keyword with name of " + localKeyword.name + " is overridden by a global keyword, and is enabled"); } // Otherwise, Unity uses the local keyword state else { string state = material.IsKeywordEnabled(localKeyword) ? "enabled" : "disabled"; Debug.Log("Local keyword with name of " + localKeyword.name + " is " + state); } } } }