Version: 2021.3
public string GetTag (string tag, bool searchFallbacks);
public string GetTag (string tag, bool searchFallbacks, string defaultValue);

描述

获取材质着色器标记的值。

如果材质的着色器未定义标记,则返回 /defaultValue/。

如果 searchFallbacksseachFallbacks,则此函数在所有子着色器和所有回退中 查找标记。如果 seachFallbacks 为 /false/,则只对标记查询 当前使用的子着色器。

使用 GetTag 而不在回退中搜索可以检测 当前使用的子着色器:向每个子着色器添加具有不同值的自定义标记, 然后在运行时查询该值。例如,Unity 水使用此函数 检测着色器回退为不反射着色器的时间,并在这种情况下关闭反射 摄像机。

using UnityEngine;

public class Example : MonoBehaviour { // Attach this to a gameObject that has a renderer.

string materialTag = "RenderType";

void Start() { Renderer rend = GetComponent<Renderer>(); string result = rend.material.GetTag(materialTag, true, "Nothing");

if (result == "Nothing") { Debug.LogError(materialTag + " not found in " + rend.material.shader.name); } else { Debug.Log("Tag found!, its value: " + result); } } }