Material.SetColor
Declaration
public void SetColor(string name, Color value);public void SetColor(int nameID, Color value);Параметры
| Параметр | Описание |
|---|---|
| nameID | Имя свойства ID, используйте Shader.PropertyToID, чтобы получить его. |
| имя | Имя свойства. Например, "_Color" в Built-in Render Pipeline, "_BaseColor" в URP. |
| значение | Значение цвета для установки. |
Описание
Задает значение свойства цвета или типа вектора.
Многие шейдеры используют более одного цвета. Используйте SetColor для изменения цвета (идентифицируемого по имени свойства шейдера или уникальному имени свойства ID).
Поведение этого метода зависит от аспектов назначенного свойства и активного цветового пространства проекта. Свойство материала считается находящимся в гамма-пространстве, если выполняется одно из следующих условий:
- Свойство объявляется как цвет и имеет атрибут
[HDR] - Свойство объявляется как цвет или вектор и имеет атрибут
[Gamma]
Если целевое свойство этого метода находится в гамма-пространстве, а проект находится в линейном пространстве, value преобразуется в линейное пространство перед сохранением. В противном случае, value Для получения более подробной информации о цветовых пространствах см. Цветовые пространства в Unity.
При установке значений цвета на материалах с помощью Standard Shader, вы должны знать, что вам может потребоваться использовать EnableKeyword для включения возможностей шейдера, которые ранее не использовались. Для более подробной информации, читайте Доступ к материалам через скрипт.
Имена свойств цвета определяются в Properties раздела в коде шейдера. Вот примеры свойств цвета в Unity предварительно встроенные шейдеры:
_Color: основной цвет материала (URP: _BaseColorВы можете получить доступ к этому свойству шейдера через color свойства.
_EmissionColor: эмиссионный цвет материала. Дополнительную информацию об определении свойств см. в Свойства в шейдерных программах.
Дополнительные ресурсы: color, GetColor, Shader.PropertyToID.
//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>();
// Use SetColor to set the main color shader property cubeRenderer.material.SetColor("_Color", Color.red); // If your project uses URP, uncomment the following line and use it instead of the previous line // cubeRenderer.material.SetColor("_BaseColor", Color.red); } }