Version: 6000.3
语言: 中文
在内置渲染管线中支持GPU实例化的着色器示例
防止 Unity 剥离内置渲染管线中的 GPU 实例化着色器

在内置渲染管线中运行时更改每个实例数据的示例

以下示例演示如何使用 MaterialPropertyBlock 对象为一组游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
请参阅术语表
在运行时。它设置了_Color上述属性着色器在 GPU 上运行的程序。更多信息
请参阅术语表
示例转换为随机颜色。

重要提示:MaterialPropertyBlocks 会破坏 SRP Batcher 的兼容性。有关详细信息,请参阅 GPU 实例化:要求和兼容性。

using UnityEngine;

public class MaterialPropertyBlockExample : MonoBehaviour
{
    public GameObject[] objects;

    void Start()
    {
        MaterialPropertyBlock props = new MaterialPropertyBlock();
        MeshRenderer renderer;

        foreach (GameObject obj in objects)
        {
            float r = Random.Range(0.0f, 1.0f);
            float g = Random.Range(0.0f, 1.0f);
            float b = Random.Range(0.0f, 1.0f);
            props.SetColor("_Color", new Color(r, g, b));

            renderer = obj.GetComponent<MeshRenderer>();
            renderer.SetPropertyBlock(props);
        }
    }
}
在内置渲染管线中支持GPU实例化的着色器示例
防止 Unity 剥离内置渲染管线中的 GPU 实例化着色器