Объявление
public void SetColor(string name, Color value);public void SetColor(int nameID, Color value);
Параметры
name | Имя свойства. |
nameID | Идентификатор имени свойства, полученный с помощью Shader.PropertyToID. |
value | Задаваемое значение Color. |
Описание
Установите свойство цвета.
Добавляет свойство в блок. Если свойство цвета с таким именем уже существует, старое значение заменяется.
Считается, что значение цвета всегда задается в пространстве sRGB и преобразуется в линейное, если активное цветовое пространство является линейным. При переключении между цветовыми пространствами необходимо вручную обновить значение цвета.
using UnityEngine;
// Draws 3 meshes with the same material but with different colors.
public class ExampleClass : MonoBehaviour
{
public Mesh mesh;
public Material material;
private MaterialPropertyBlock block;
void Start()
{
block = new MaterialPropertyBlock();
}
void Update()
{
// red mesh
block.SetColor("_Color", Color.red);
Graphics.DrawMesh(mesh, new Vector3(0, 0, 0), Quaternion.identity, material, 0, null, 0, block);
// green mesh
block.SetColor("_Color", Color.green);
Graphics.DrawMesh(mesh, new Vector3(5, 0, 0), Quaternion.identity, material, 0, null, 0, block);
// blue mesh
block.SetColor("_Color", Color.blue);
Graphics.DrawMesh(mesh, new Vector3(-5, 0, 0), Quaternion.identity, material, 0, null, 0, block);
}
}
Вариант функции, который принимает nameID
, работает быстрее. Если вы неоднократно изменяете свойства с одним и тем же именем,
используйте Shader.PropertyToID, чтобы получить уникальный идентификатор для имени, и передайте идентификатор в SetColor.
using UnityEngine;
// Draws 3 meshes with the same material but with different colors.
public class ExampleClass : MonoBehaviour
{
public Mesh mesh;
public Material material;
private MaterialPropertyBlock block;
private int colorID;
void Start()
{
block = new MaterialPropertyBlock();
colorID = Shader.PropertyToID("_Color");
}
void Update()
{
// red mesh
block.SetColor(colorID, Color.red);
Graphics.DrawMesh(mesh, new Vector3(0, 0, 0), Quaternion.identity, material, 0, null, 0, block);
// green mesh
block.SetColor(colorID, Color.green);
Graphics.DrawMesh(mesh, new Vector3(5, 0, 0), Quaternion.identity, material, 0, null, 0, block);
// blue mesh
block.SetColor(colorID, Color.blue);
Graphics.DrawMesh(mesh, new Vector3(-5, 0, 0), Quaternion.identity, material, 0, null, 0, block);
}
}
Смотрите так же: SetFloat, SetVector, SetMatrix, SetTexture.