Описание
Локальное пространство ключевых слов этого шейдера.
Ключевые слова шейдера определяют, какие варианты шейдера использует Unity. Информацию о работе с ключевыми словами локального шейдера и глобальном ключевом слове шейдера и о том, как они взаимодействуют, см. в разделе Использование ключевых слов шейдера со сценариями C#.
keywordSpace
содержит:
- Все ключевые слова, объявленные в исходном файле. Дополнительную информацию см. в разделе Объявление ключевых слов шейдера.
- Все ключевые слова, объявленные в зависимостях исходного файла. Это означает все шейдеры, включенные с помощью команды Fallback, и все проходы, включенные с помощью команда UsePass.
- Все ключевые слова, которые Unity добавляет автоматически. Дополнительную информацию см. в разделе предопределенные ключевые слова для шейдеров Unity.
В этом примере выполняются итерации по ключевым словам локального шейдера в локальном пространстве ключевых слов для графического шейдера. Он определяет, переопределены ли они глобальным ключевым словом шейдера, и выводит их состояние.
using UnityEngine;
using UnityEngine.Rendering;
public class KeywordExample : MonoBehaviour
{
public Material material;
void Start()
{
CheckShaderKeywordState();
}
void CheckShaderKeywordState()
{
// Get the instance of the Shader class that the material uses
var shader = material.shader;
// Get all the local keywords that affect the Shader
var keywordSpace = shader.keywordSpace;
// Iterate over the local keywords
foreach (var 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
{
var state = material.IsKeywordEnabled(localKeyword) ? "enabled" : "disabled";
Debug.Log("Local keyword with name of " + localKeyword.name + " is " + state);
}
}
}
}
Смотрите так же: Material.EnableKeyword, Material.DisableKeyword, Shader keywords.