Unity Legacy Shader, как изменить деколь со скрипта - PullRequest
0 голосов
/ 03 июня 2019

Это то, что я использую, но я не могу найти в Интернете ничего о том, как изменить наклейку.

Давайте рассмотрим, что у меня есть несколько текстур, напр. (Tex1, Tex2, и т. Д.).

  • Как я могу получить доступ к _DecalTex в скрипте, чтобы я мог назначать различные текстуры?
  • Как, если выбрана кнопка Изменить _DecalTex == Tex2, должен быть какой-то простой способ, которым я простоЕще не знаете или нашли, любая помощь или ссылки на это были бы полезны. Спасибо:)

1 Ответ

1 голос
/ 04 июня 2019

Если вы посмотрите на исходный код 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

...