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

Установить для шейдера требование пакета

Чтобы настроить шейдер на компиляцию только при установке определенного пакета, добавьте блок 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"
            }
            ...
        }
    }
}

Дополнительные ресурсы