Share via


Animazione — MRTK3

La maggior parte delle proprietà dello shader Standard degli strumenti di grafica può essere animata usando il sistema di animazione predefinito di Unity. I materiali usati nei componenti dell'interfaccia utente di Unity non espongono le relative proprietà materiali al sistema di animazione di Unity per impostazione predefinita (né supportano blocchi di proprietà materiali). Strumenti grafici contiene un sistema per supportare l'animazione delle proprietà dei materiali dell'interfaccia utente di Unity.

Lo script CanvasMaterialAnimatorGraphicsToolsStandardCanvas.cs espone tutte le proprietà dei materiali disponibili nello shader Strumenti di grafica/Canvas standard . L'aggiunta di questo componente a un oggetto gioco UnityUI con canvasRenderer espone le proprietà del materiale al sistema di animazione di Unity e aggiornerà automaticamente il materiale corretto quando viene animato.

Nota

CanvasMaterialAnimatorGraphicsToolsStandardCanvas.cs funziona solo con gli strumenti di grafica/canvas shader standard. Per altri shader, usa lo script di animazione corrispondente. Ad esempio, CanvasMaterialAnimatorCanvasBackplate.cs per lo Graphics Tools/Canvas/Backplate shader.

Utilizzo a livello di codice

In genere un animatore di materiali canvas è basato sul sistema di animazione di Unity, tuttavia, è possibile usare questa classe a livello di codice. Dopo aver modificato uno dei membri della classe, assicurarsi di chiamare il ApplyToMaterial metodo . Di seguito è riportato un esempio di pulsazione della quantità di estrusione dei vertici:

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

Uso avanzato

Se si esamina il contenuto di CanvasMaterialAnimatorGraphicsToolsStandardCanvas.cs, è disponibile codice boilerplate che potrebbe non essere sincronizzato con gli strumenti grafici/canvas shader standard. Fortunatamente, questo codice viene generato automaticamente facendo clic con il pulsante destro del mouse su uno shader nella finestra del progetto e selezionando Strumenti > grafici Genera animazione materiale canvas.

È possibile generare un animatore materiale canvas per qualsiasi shader che il progetto deve animare. Le proprietà dei materiali verranno aggiornate in fase di modifica e di esecuzione.

Nota

Per impostazione predefinita, gli animatori di materiali canvas operano sul materiale condiviso del renderer. Se vuoi che l'animazione influisca solo su un singolo materiale, puoi selezionare la proprietà Instance Materials nel controllo dell'animatore del materiale dell'area di disegno. Verrà allocato un nuovo materiale per ogni istanza.

Vale anche la pena notare che quando si animano materiali condivisi in fase di esecuzione negli aggiornamenti del materiale dell'editor può essere serializzato su disco. Per evitare questo problema, Gli strumenti grafici usano il modello MaterialRestorer.cs .

Vedi anche