Unity 6.3
0 онлайн 96 гостей 3 в системе
Вход
Оптимизация Шаг 171 из 208

Пример изменения данных на экземпляр во время выполнения в встроенном Render Pipeline

Следующий пример демонстрирует, как использовать объекты MaterialPropertyBlock для установки данных по экземплярам для группы GameObjects во время выполнения. Он устанавливает свойство _Color из вышеприведенных примеров шейдеров на случайный цвет.

Важно: MaterialPropertyBlocks нарушает SRP совместимость пакетного процессора. Дополнительные сведения см. в GPU instancing: Требования и совместимость.

using UnityEngine;

public class MaterialPropertyBlockExample : MonoBehaviour
{
    public GameObject[] objects;

    void Start()
    {
        MaterialPropertyBlock props = new MaterialPropertyBlock();
        MeshRenderer renderer;

        foreach (GameObject obj in objects)
        {
            float r = Random.Range(0.0f, 1.0f);
            float g = Random.Range(0.0f, 1.0f);
            float b = Random.Range(0.0f, 1.0f);
            props.SetColor("_Color", new Color(r, g, b));

            renderer = obj.GetComponent<MeshRenderer>();
            renderer.SetPropertyBlock(props);
        }
    }
}