Animationによるコンポーネントの値の変更を検知する方法の紹介です
概要
UnityのAnimation機能を使ってコンポーネントの値を書き換えた際に即座に何か処理を行いたい(例えばViewに値を反映することでAnimation Previewを行えるようにしたいなど)場合の実現方法を紹介します。
MonoBehaviour.OnDidApplyAnimationProperties
MonoBehaviourにはOnDidApplyAnimationProperties
というメソッドがあり、これはAnimationから値を更新した際に呼び出されます。
また、Animationを編集中に即座に反映したい場合にはExecuteInEditMode
属性を付与する必要があります。
using UnityEngine; [ExecuteInEditMode] public class MovementController : MonoBehaviour { [SerializeField] private float scale; void OnDidApplyAnimationProperties() { Debug.Log("OnDidApplyAnimationProperties is called!"); transform.localScale = Vector3.one * scale; } }
完成👏