Анимация — MRTK3
Большинство свойств стандартного шейдера Graphics Tools можно анимировать с помощью встроенной системы анимации Unity. Материалы, используемые в компонентах Unity UI, по умолчанию не предоставляют свои свойства материалов системе анимации Unity (и не поддерживают блоки свойств материалов). В Graphics Tools имеется система для поддержки анимации свойств материалов Unity UI.
Скрипт CanvasMaterialAnimatorGraphicsToolsStandardCanvas.cs предоставляет все свойства материала, доступные в шейдере Graphics Tools/Стандартный холст. Добавление этого компонента в игровой объект UnityUI с помощью CanvasRenderer предоставит свойства материала системе анимации Unity и автоматически обновит правильный материал при анимации.
Примечание
Скрипт CanvasMaterialAnimatorGraphicsToolsStandardCanvas.cs работает только с шейдером Graphics Tools/Стандартный холст. Для других шейдеров используйте соответствующий скрипт анимации. Например, CanvasMaterialAnimatorCanvasBackplate.cs для шейдера Graphics Tools/Canvas/Backplate
.
Использование программным способом
Обычно аниматор материала холста управляется системой анимации Unity, однако этот класс можно использовать программным способом. После изменения любого из членов класса обязательно вызовите метод ApplyToMaterial
. Ниже приведен пример пульсирования объемного эффекта вершины:
using UnityEngine;
public class ScriptedMaterialAnimation : MonoBehaviour
{
public CanvasMaterialAnimatorGraphicsToolsStandardCanvas Animator;
private void Update()
{
Animator._VertexExtrusionValue = Mathf.Lerp(0, 0.002f, (Mathf.Sin(Mathf.Repeat(Time.time, Mathf.PI * 2.0f)) + 1.0f) * 0.5f);
Animator.ApplyToMaterial();
}
}
Расширенное использование
При проверке содержимого CanvasMaterialAnimatorGraphicsToolsStandardCanvas.cs существует стандартный код, который может не синхронизироваться с шейдером Graphics Tools/Стандартный холст. К счастью, этот код создается автоматически путем нажатия правой кнопкой мыши шейдера в окне проекта и выбора пункта Graphics Tools > Создать материал холста.
Вы можете создать аниматор материала холста для любого шейдера, необходимого для анимации проекта. Свойства материала будут обновлены во время редактирования и выполнения.
Примечание
По умолчанию аниматоры материалов холста работают с общим материалом отрисовщика. Если вы хотите, чтобы анимация влияла только на один материал, можно выбрать свойство Материалы экземпляра в инспекторе аниматора материала холста. При этом будет выделен новый материал для каждого экземпляра.
Также стоит отметить, что при анимации общих материалов во время выполнения в редакторе обновления могут быть сериализованы на диск. Чтобы избежать этого, в Graphics Tools используется шаблон MaterialRestorer.cs.