tag | 要设置的标签的名称。 |
val | 要设置的值的名称。空字符串用于清除覆盖标志。 |
在材质上设置覆盖标签/值。
将在材质上设置一个标签/值,该标签/值会覆盖来自着色器的标签的值。这可以用来确保替换着色器(例如渲染 DepthNormals)即使原始着色器只支持特定的渲染类型也能正常工作。例如,如果着色器只支持特定的渲染类型,但使用关键字以多种方式进行渲染,则可以使用 SetOverrideTag 从自定义材质检查器确保材质即使在着色器被替换的情况下也能正确渲染。请注意,覆盖 LightMode 标签无效。
using UnityEngine;
public static class MaterialUtils { public enum BlendMode { Opaque, Cutout, Fade, Transparent }
public static void SetupBlendMode(Material material, BlendMode blendMode) { switch (blendMode) { case BlendMode.Opaque: material.SetOverrideTag("RenderType", ""); material.DisableKeyword("_ALPHATEST_ON"); material.renderQueue = -1; break; case BlendMode.Cutout: material.SetOverrideTag("RenderType", "TransparentCutout"); material.EnableKeyword("_ALPHATEST_ON"); material.renderQueue = 2450; break; } } }