版本:Unity 6 (6000.0)
语言:英语
支持内置渲染管线中 GPU 实例化的 HLSL 着色器示例
防止 Unity 在内置渲染管线中剥离 GPU 实例化着色器

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

以下示例演示了如何使用 MaterialPropertyBlock 对象为一组 游戏对象Unity 场景中的基本对象,可以代表角色、道具、场景、摄像机、路径点等。游戏对象的功能由附加在其上的组件定义。 更多信息
词汇表 中查看
运行时设置每个实例数据。它将上述 着色器在 GPU 上运行的程序。 更多信息
词汇表 中查看
示例中的 _Color 属性设置为随机颜色。

重要:MaterialPropertyBlocks 会破坏 SRP 批处理器的兼容性。有关详细信息,请参阅 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 实例化的 HLSL 着色器示例
防止 Unity 在内置渲染管线中剥离 GPU 实例化着色器