アニメーション — 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 パターンを使用します。