Unity 6.3
0 онлайн 13 гостей 3 в системе
Вход

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.