Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Объявление

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.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3