Animation – MRTK3

Die meisten Eigenschaften im Standard-Shader der Grafiktools können mithilfe des integrierten Animationssystems von Unity animiert werden. Materialien, die in Unity-UI-Komponenten verwendet werden, machen ihre Materialeigenschaften standardmäßig nicht für das Animationssystem von Unity verfügbar (und unterstützen auch keine Materialeigenschaftsblöcke). Die Grafiktools enthalten ein System, das die Animation von Unity UI-Materialeigenschaften unterstützt.

Das Skript CanvasMaterialAnimatorGraphicsToolsStandardCanvas.cs macht alle Materialeigenschaften verfügbar, die im Shader Grafiktools/Standard Canvas verfügbar sind. Durch das Hinzufügen dieser Komponente zu einem UnityUI-Spielobjekt mit einem CanvasRenderer werden Materialeigenschaften für das Animationssystem von Unity verfügbar gemacht. Beim Animieren von Elementen wird automatisch das richtige Material aktualisiert.

Hinweis

CanvasMaterialAnimatorGraphicsToolsStandardCanvas.cs funktioniert nur mit dem Shader Grafiktools/Standard Canvas. Verwenden Sie für andere Shader das entsprechende Animationsskript. Beispielsweise CanvasMaterialAnimatorCanvasBackplate.cs für den Graphics Tools/Canvas/Backplate-Shader.

Programmgesteuerte Verwendung

Normalerweise wird ein Zeichenbereich-Materialanimator vom Animationssystem von Unity gesteuert, es ist aber möglich, diese Klasse programmgesteuert zu verwenden. Achten Sie nach Änderungen an Elementen der Klasse darauf, die ApplyToMaterial-Methode aufzurufen. Ein Beispiel für das Pulsieren des Vertex-Extrusionsbetrags sehen Sie unten:

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();
    }
}

Erweiterte Verwendung

Wenn Sie den Inhalt von CanvasMaterialAnimatorGraphicsToolsStandardCanvas.cs untersuchen, gibt es dort Standardcode, dessen Synchronisierung mit dem Shader Grafiktools/Standard Canvas verloren gehen kann. Glücklicherweise wird dieser Code durch rechten Mausklick auf einen Shader im Projektfenster und Auswählen von Grafiktools > Zeichenbereich-Materialanimator generieren automatisch generiert.

Sie können einen Zeichenbereich-Materialanimator für jeden Shader generieren, den Ihr Projekt animieren muss. Materialeigenschaften werden zum Zeitpunkt der Bearbeitung und zur Laufzeit aktualisiert.

Hinweis

Standardmäßig funktionieren Zeichenbereich-Materialanimatoren auf dem freigegebenen Material des Renderers. Wenn Sie möchten, dass sich die Animation nur auf ein einzelnes Material auswirkt, können Sie die Eigenschaft Instanzmaterialien im Inspektor des Zeichenbereich-Materialanimators auswählen. Dadurch wird für jede Instanz ein neues Material zugewiesen.

Ferner ist erwähnenswert, dass beim Animieren freigegebener Materialien zur Laufzeit im Materialupdates im Editor möglicherweise auf den Datenträger serialisiert werden. Um dies zu vermeiden, nutzen die Grafiktools das Muster MaterialRestorer.cs.

Weitere Informationen