Version: 6000.3
语言: 中文
禁用着色器的动态批处理
对包要求定义进行故障排除

获取脚本中的标记值

将 SubShader 标记与 C# 代码结合使用

你可以使用 Material.GetTag API 从 C# 脚本中读取 SubShader 标签,如下所示:

using UnityEngine;

public class Example : MonoBehaviour
{
    // Attach this to a gameObject that has a Renderer component
    string tagName = "ExampleTagName";

    void Start()
    {
        Renderer myRenderer = GetComponent<Renderer>();
        string tagValue = myRenderer.material.GetTag(ExampleTagName, true, "Tag not found");
        Debug.Log(tagValue);
    }
}

队列标记

您可以使用 Shader.renderQueue 读取着色器在 GPU 上运行的程序。更多信息
请参阅术语表
对象的活动子着色器。

默认情况下,Unity 在 [Queue] 标签中指定的渲染队列中渲染几何体。您可以按物料覆盖此值。在 Unity 编辑器中,您可以通过设置 Render Queue 属性在材质检查器中执行此作。在C#脚本中,你可以通过使用Rendering.RenderQueue枚举设置Material.renderQueue的值来执行此作。

将 Pass 标记与 C# 代码配合使用

从 C# 访问 Pass 标记的值脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性以及以您喜欢的任何方式响应用户输入。更多信息
请参阅术语表
,您可以使用 Shader.FindPassTagValue API。这适用于 Unity 的预定义 Pass 标签,以及你创建的自定义 Pass 标签。

将 LightMode 标记与 C# 脚本一起使用

Material.SetShaderPassEnabledShaderTagId 使用LightMode标记来确定 Unity 如何处理给定的 Pass。

在可编写脚本的渲染管线(Render Pipeline) 获取场景内容并将其显示在屏幕上的一系列作。Unity 允许您从预构建的渲染管道中进行选择,或编写自己的渲染管道。更多信息
请参阅术语表
,您可以为LightMode标记。然后,你可以使用这些自定义值,通过配置 DrawingSettings 结构体来确定在给定调用 ScriptableRenderContext.DrawRenderers 期间要绘制的通道。有关更多信息和代码示例,请参阅在自定义可编写脚本的渲染管线中创建简单的渲染循环

其他资源

禁用着色器的动态批处理
对包要求定义进行故障排除