Version: 2019.2
public void SetColor (string name, Color value);
public void SetColor (int nameID, Color value);


nameIDProperty name ID, use Shader.PropertyToID to get it.
nameProperty name, e.g. "_Color".
valueColor value to set.


Sets a named color value.

Многие шейдеры используют больше одного цвета. Используйте SetColor для изменения propertyName цвета.

When setting color values on materials using the Standard Shader, you should be aware that you may need to use EnableKeyword to enable features of the shader that were not previously in use. For more detail, read Accessing Materials via Script.

Common color names used by Unity's builtin shaders:
"_Color" is the main color of a material. This can also be accessed via color property.
"_EmissionColor" is the emissive color of a material.

See Also: color, GetColor, Shader.PropertyToID, Properties in Shader Programs.

//Attach this script to any GameObject in your scene to spawn a cube and change the material color
using UnityEngine;

public class Example : MonoBehaviour { void Start() { //Create a new cube primitive to set the color on GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);

//Get the Renderer component from the new cube var cubeRenderer = cube.GetComponent<Renderer>();

//Call SetColor using the shader property name "_Color" and setting the color to red cubeRenderer.material.SetColor("_Color",; } }