Пример изменения данных на экземпляр во время выполнения в встроенном Render Pipeline
Следующий пример демонстрирует, как использовать объекты MaterialPropertyBlock для установки данных по экземплярам для группы GameObjects во время выполнения. Он устанавливает свойство _Color из вышеприведенных примеров шейдеров на случайный цвет.
Важно: MaterialPropertyBlocks нарушает SRP совместимость пакетного процессора. Дополнительные сведения см. в GPU instancing: Требования и совместимость.
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);
}
}
}