Установить для шейдера требование пакета
Чтобы настроить шейдер на компиляцию только при установке определенного пакета, добавьте блок PackageRequirements в блок SubShader или блок Pass.
Когда Unity импортирует шейдер, он проверяет, установлен ли указанный пакет в проекте, и соответствует ли версия пакета требованиям. Если требования не выполнены, Unity пропускает дальнейшую обработку подшайдера или прохода шейдера.
Примечание: Unity предупреждает вас в окне Консоли, если блоки PackageRequirements в шейдере означают, что ни один из субшайдеров не соответствует установленным пакетам.
Дополнительные сведения см. в блоке PackageRequirements в ссылке ShaderLab.
Требовать версию пакета
Внутри блока PackageRequirements используйте следующий синтаксис:
"com.my.package": "MAJOR.MINOR"для требования версии пакетаMAJOR.MINORили более поздней."unity": "6000.MINOR"требует Unity версии6000.MINORили более поздней.
Блок PackageRequirements должен быть первым блоком в блоке SubShader или блоке Pass.
Требовать версию в пределах диапазона
Внутри блока PackageRequirements используйте [MINIMUM,MAXIMUM], где MININUM — минимальная версия и MAXIMUM — максимальная версия. Диапазон включает в себя все версии. Например:
"com.my.package": "[17.2,17.5]"для требования версии пакета17.2или более поздней, до и включая17.5."unity": "[6000.2,6000.3]"требует Unity версии6000.2или более поздней, до6000.3включительно.
Чтобы указать не включающий диапазон, используйте скобки. Например, "com.my.package": "(17.2,17.5)" требует версии пакета от 17.3 до 17.4, исключая 17.2 и 17.5.
Чтобы указать несколько диапазонов, используйте точку с запятой для разделения диапазонов. Например, "unity": "[6000.0,6000.1];[6000.3,6000.4]".
Пример
Следующий шейдер компилируется только в том случае, если в проекте установлен пакет com.my.package с версией 2.2 или выше. Пропуск шейдера компилируется только в том случае, если в проекте установлен пакет Universal Render Pipeline с версией между 16.2.1 и 17.0, а также пакет TextMesh Pro с версией 3.2 или выше.
Shader "Examples/ExampleShader"
{
SubShader
{
PackageRequirements
{
"com.my.package": "2.2"
}
Pass
{
PackageRequirements
{
"com.unity.render-pipelines.universal": "[16.2.1,17.0]"
"com.unity.textmeshpro": "3.2"
}
...
}
}
}