The best solution to this problem is that instead of saving the material for each object and changing the parameters separately, you directly change the variable of the
Shader. If you are using the Amplify Shader Editor, it is important to set the shader type to Global.


In this example code, the color changes sinusoidally. It is enough to define the shader parameter ID in the static variable for maximum performance and change it with the Shader.SetGlobalColor
method. And you don't need to have this code on every object. Just add it on one Manager and it's done.
public Color colorA = Color.cyan;
public Color colorB = Color.red;
// cache ID value because calling with string need heavier performance
private static readonly int CubeColor = Shader.PropertyToID("CubeColor");
void Update()
{
// Change Directly Shader Global Color Value
Shader.SetGlobalColor(CubeColor, Color.Lerp(colorA, colorB, (Mathf.Sin(Time.time) + 1) / 2));
}