アニメーション — MRTK3

グラフィックス ツールの標準シェーダーのほとんどのプロパティは、Unity の組み込み アニメーション システムを使用してアニメーション化できます。 Unity UI コンポーネントで使用されるマテリアルは、既定では Unity のアニメーション システムにマテリアル プロパティを公開していません (また、マテリアル プロパティ ブロックもサポートしていません)。 グラフィックス ツールには、Unity UI のマテリアル プロパティのアニメーションをサポートするシステムが含まれています。

CanvasMaterialAnimatorGraphicsToolsStandardCanvas.cs スクリプトでは、グラフィックス ツール/標準 Canvas シェーダーで使用できるすべてのマテリアル プロパティを公開します。 CanvasRenderer を使用して UnityUI ゲーム オブジェクトにこのコンポーネントを追加すると、マテリアル プロパティが Unity のアニメーション システムに公開され、アニメーション化されると正しいマテリアルが自動的に更新されます。

注意

CanvasMaterialAnimatorGraphicsToolsStandardCanvas.csは、グラフィックス ツール/標準 Canvas シェーダーでのみ機能します。 他のシェーダーの場合は、対応するアニメーション スクリプトを使用します。 たとえば、Graphics Tools/Canvas/Backplate シェーダーの CanvasMaterialAnimatorCanvasBackplate.cs です。

プログラムによる使用方法

通常、キャンバス マテリアル アニメーターは 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 の内容を調べると、グラフィックス ツール/標準 Canvas シェーダーと同期しない可能性がある定型コードがあります。 このコードは、プロジェクト ウィンドウでシェーダーを右クリックし、[グラフィックス ツール] > [キャンバス マテリアル アニメーターの生成] を選択することで自動生成されます。

プロジェクトでアニメーション化する必要がある、任意のシェーダーのキャンバス マテリアル アニメーターを生成できます。 マテリアル プロパティは、編集時と実行時に更新されます。

注意

既定では、キャンバス マテリアル アニメーターはレンダラーの共有マテリアルに対して動作します。 アニメーションを 1 つのマテリアルのみに影響させる場合は、キャンバス マテリアル アニメーターのインスペクターで [インスタンス マテリアル] プロパティを選択できます。 これにより、すべてのインスタンスに新しいマテリアルが割り当てられます。

また、エディターマテリアルで、実行時に共有マテリアルをアニメーション化するときに、更新がディスクにシリアル化される可能性もあります。 これを回避するために、グラフィックス ツールでは MaterialRestorer.cs パターンを使用します。

関連項目