Documentation

Unity Engine

Unity Engine

Access properties in combined meshes

Use MaterialPropertyBlocks to change properties of combined meshes without breaking batching.
Read time 1 minuteLast updated a month ago

Important
The Built-In Render Pipeline is deprecated and will be made obsolete in a future release.
It remains supported, including bug fixes and maintenance, through the full Unity 6.7 LTS lifecycle.
In the Built-in Render Pipeline, you can use a MaterialPropertyBlock to change material properties without breaking draw call batching. The CPU still needs to make some render-state changes, but using a
MaterialPropertyBlock
is faster than using multiple materials.
If your project uses a Scriptable Render Pipeline, don't use a
MaterialPropertyBlock
because they remove SRP Batcher compatibility for the material. Use different materials for the different properties instead.
Warning
When you access shared material properties from a C# script, make sure to use Renderer.sharedMaterial and not Renderer.material.
Renderer.material
creates a copy of the material and assigns the copy back to the Renderer. This stops Unity from batching the draw calls for that Renderer.

Additional resources