Material.IsKeywordEnabled
Declaration
public bool IsKeywordEnabled(ref Rendering.LocalKeyword keyword);public bool IsKeywordEnabled(string keyword);Параметры
| Параметр | Описание |
|---|---|
| ключевое слово | LocalKeyword для проверки. |
| ключевое слово | Имя LocalKeyword для проверки. |
Возвращаемое значение
логическое Возвращает true, если LocalKeyword с указанным именем включено для этого материала.
Описание
Проверяет, включено ли ключевое слово локального шейдера для этого материала.
Ключевые слова шейдера определяют, какие варианты шейдера использует Unity. ключевые слова локального шейдера и глобальные ключевые слова шейдера и как они взаимодействуют, см. Использование ключевых слов шейдера со скриптами C#.
Если вы проходите в LocalKeyword и не существует в международном праве. Shader.keywordSpace для шейдера, который использует этот материал, эта функция возвращает false. Если вы передаете строку и LocalKeyword с этим name не существует в Shader.keywordSpace для шейдера, который использует этот материал, эта функция возвращает false.
Версия этой функции, которая принимает строку в качестве параметра, медленнее версии, которая принимает строку в качестве параметра. LocalKeyword. Если вы вызываете эту функцию более одного раза, то лучше всего создать LocalKeyword структуру, кэшируйте её и используйте.
Примечание: A LocalKeyword является специфическим для одного Shader или ComputeShader Вы не можете использовать его с другими Shader или ComputeShader экземпляры, даже если они объявляют ключевые слова с одинаковым названием.
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); } } } }
Дополнительные ресурсы: Варианты шейдеров и ключевые слова, LocalKeyword, GlobalKeyword, EnableKeyword, DisableKeyword, SetKeyword, Shader.keywordSpace, enabledKeywords, shaderKeywords.