Unity Legacy Shader 如何从脚本更改贴花

Unity Legacy Shader how to change decal from script

这就是我正在使用的,但我在网上找不到任何关于如何更换贴花的信息。

假设我有多个纹理,例如(Tex1、Tex2、..等)。

如果您查看 LegacyShaders/Decal(state Unity 2017.2)的源代码,您会看到您要更改的 属性 称为 _DecalText

Shader "Legacy Shaders/Decal" 
{
    Properties 
    {
        _Color ("Main Color", Color) = (1,1,1,1)
        _MainTex ("Base (RGB)", 2D) = "white" {}
        _DecalTex ("Decal (RGBA)", 2D) = "black" {}
    }

    ...
}

您可以简单地使用 material.SetTexture

进行设置
material.SetTexture("_DecalTex", texture);

例如喜欢

public class Example : MonoBehaviour
{
    // reference in the Inspector
    public Texture texture;

    private void Start()
    {
        var renderer = GetComponent<MeshRenderer>();
        var material = renderer.material;

        material.SetTexture("_DecalTex", texture);
    }
}