動畫 — MRTK3

圖形工具標準著色器上的大部分屬性都可以使用 Unity 的內建 動畫系統產生動畫效果。 Unity UI元件上使用的材質預設不會將其材質屬性公開至 Unity 的動畫系統, (也不支援材料屬性區塊) 。 圖形工具組含一個系統,可支援 Unity UI 材質屬性的動畫。

CanvasMaterialAnimatorGraphicsToolsStandardCanvas.cs腳本會公開圖形工具/標準畫布著色器中可用的所有材質屬性。 將此元件新增至具有 CanvasRenderer 的 UnityUI 遊戲物件,會將材質屬性公開至 Unity 的動畫系統,並在動畫顯示時自動更新正確的材質。

注意

CanvasMaterialAnimatorGraphicsToolsStandardCanvas.cs 僅適用于 Graphics Tools/Standard Canvas 著色器。 針對其他著色器,請使用其對應的動畫腳本。 例如, 著色器的 CanvasMaterialAnimatorCanvasBackplate.csGraphics 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/Standard Canvas 著色器同步。 幸運的是,此程式碼會自動產生,方法是以滑鼠右鍵按一下 專案視窗中 的著色器,然後選取 [ 圖形工具 > 產生畫布材質動畫器]。

您可以為專案需要動畫的任何著色器產生畫布材質動畫器。 材質屬性會在編輯和執行時間更新。

注意

根據預設,畫布材質動畫器會在轉譯器的共用材質上運作。 如果您想要動畫只影響單一材質,您可以在畫布材質動畫工具的偵測器上選取 [實例材質 ] 屬性。 這會為每個實例配置新的材質。

也值得注意,在編輯器材質更新中,在執行時間以動畫顯示共用材質時,可能會序列化為磁片。 若要避免這種情況,圖形工具會使用 MaterialRestorer.cs 模式。

另請參閱