Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

LocalKeyword.isOverridable

public bool isOverridable;

Описание

Объявлено ли это ключевое слово шейдера с глобальной областью действия. (Только чтение).

Когда глобальное и локальное состояние ключевого слова шейдера противоречат друг другу, Unity использует это значение, чтобы определить, включено или отключено ключевое слово.

  • Когда isOverridable имеет значение true: если GlobalKeyword с такое же name существует и включено, Unity использует состояние GlobalKeyword. В противном случае Unity использует состояние LocalKeyword.
  • Когда isOverridable имеет значение false: Unity всегда использует состояние LocalKeyword.

Чтобы установить для isOverridable значение true, объявите ключевое слово шейдера с **глобальной областью действия**. Чтобы установить для isOverridable значение false, объявите ключевое слово шейдера с **локальной областью действия**. Информацию об объявлении ключевых слов шейдера с локальной или глобальной областью действия см. в разделе Ключевые слова шейдера: объявление ключевых слов с локальной или глобальной областью действия.

Примечание. Если ключевое слово объявлено с локальной или глобальной областью действия в исходном файле Shader, а ключевое слово с тем же именем объявлено в одна из его зависимостей, область в исходном файле переопределяет область в зависимостях. Зависимости включают все шейдеры, которые включаются с помощью команды Fallback, и проходы, которые включаются с помощью команда UsePass.

В этом примере перебираются локальные ключевые слова шейдера в локальном пространстве ключевых слов для материала. Он определяет, переопределены ли они глобальным ключевым словом шейдера, и выводит их состояние.

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); } } } }

Смотрите так же: Shader variants and keywords, GlobalKeyword.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3