void OnDidApplyAnimationProperties()
が使えます。
// アニメーションのプレビューでも値をチェックしたいのでExecuteAlwaysする
[ExecuteAlways]
public class Foo : MonoBehaviour
{
public float foo; // TimelineとかAnimationでこの値を変更する
void OnDidApplyAnimationProperties()
{
// ……すると、このメソッドが呼ばれる
Debug.Log("foo changed!")
}
}
どの値が変更されたのかはわからないので、古い値をとっておいて自分でチェックする必要があるっぽい。マジか……?
[SerializeField] private _foo;
float _lastFoo;
[SerializeField] private _bar;
float _lastBar;
void OnDidApplyAnimationProperties()
{
if (_foo != _lastFoo)
{
Debug.Log("foo changed!")
}
if (_bar != _lastBar)
{
Debug.Log("bar changed!")
}
_lastFoo = _foo;
_lastBar = _bar;
}
もっといい方法あれば教えてください。