Как получить доступ к свойствам Unity Shader в скрипте? - PullRequest
0 голосов
/ 31 января 2020

Я хочу получить доступ к двум свойствам _Color и _Color2 и хочу изменить значения с помощью скрипта, поскольку мы можем видеть, что значение имеет формат (1,1,1,1), так как я могу изменить его в основном значения цвета.

Shader "Custom/SpriteGradient" 
{
    Properties
    {
        [PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {}
        _Color("LeftColor", Color) = (1,1,1,1)
        _Color2("RightColor", Color) = (1,1,1,1)
        _Scale("Scale", Float) = 1

        _StencilComp("Stencil Comparison", Float) = 8
        _Stencil("Stencil ID", Float) = 0
        _StencilOp("Stencil Operation", Float) = 0
        _StencilWriteMask("Stencil Write Mask", Float) = 255
        _StencilReadMask("Stencil Read Mask", Float) = 255
        _ColorMask("Color Mask", Float) = 15
        // see for example
        // http://answers.unity3d.com/questions/980924/ui-mask-with-shader.html
    }

    ...
}

1 Ответ

1 голос
/ 31 января 2020

См. Material.SetColor

Модифицированный пример из API

void Start()
{
    //Get the Renderer component from this object
    var renderer = GetComponent<Renderer>();

    //Call SetColor using the shader property name "_Color" and "_Color2" and setting their color to red
    cubeRenderer.material.SetColor("_Color", Color.red);
    cubeRenderer.material.SetColor("_Color2", new Color(1, 0, 0, 1));  
}

Имя означает фактическое имя свойства, а не отображаемое имя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...