다음 예시에서는 MaterialPropertyBlock 오브젝트를 사용하여 런타임 시 게임 오브젝트 그룹에 대한 인스턴스당 데이터를 설정하는 방법을 보여 줍니다. 위의 셰이더 예시에서 _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);
}
}
}