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

时间:2019-06-03 20:34:42

标签: unity3d shader material decal

这是我正在使用的东西,但是我找不到关于如何更改贴花的在线信息。

让我们考虑一下我有多个纹理(Tex1,Tex2等)。

  • 如何在脚本中访问_DecalTex,以便分配不同的纹理?
  • 就像选择按钮一样更改_DecalTex == Tex2,应该有一些我不知道或已经找到的简单方法,对此的任何帮助或链接都会有所帮助谢谢:)

1 个答案:

答案 0 :(得分:1)

如果您查看LegacyShaders/Decal(状态为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);
    }
}

enter image description here