using UnityEngine; public class SimpleGPUInstancingExample : MonoBehaviour { public Transform Prefab; public Material InstancedMaterial; void Awake() { #if UNITY_5_6_OR_NEWER InstancedMaterial.enableInstancing = true; #endif float range = 4f; for ( int i = 0; i < 1000; i++ ) { Transform newInstance = Instantiate( Prefab, new Vector3( Random.Range( -range, range ), range + Random.Range( -range, range ), Random.Range( -range, range ) ), Quaternion.identity ) as Transform; MaterialPropertyBlock matpropertyBlock = new MaterialPropertyBlock(); Color newColor = new Color( Random.Range( 0.0f, 1.0f ), Random.Range( 0.0f, 1.0f ), Random.Range( 0.0f, 1.0f ) ); matpropertyBlock.SetColor( "_Color", newColor ); newInstance.GetComponent().SetPropertyBlock( matpropertyBlock ); } } }