以下示例演示了如何使用 MaterialPropertyBlock 对象在运行时为一组__ GameObject__Unity 场景中的基础对象,可以表示角色、道具、风景、摄像机、路径点等。GameObject 的功能由所附的组件决定。更多信息
See in Glossary 设置逐实例数据。示例将上述着色器示例中的 _Color 属性设置为随机颜色。
重要信息:MaterialPropertyBlock 会破坏 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);
}
}
}