うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【Unity】AnimationClip の Curve を差し替える

AnimationUtility には 一部の Curve を差し替える処理が無いため
一度 AnimationClip の ClearCurves で初期化してから新しく差し込む必要がある

// 更新用にカーブをキャッシュ
var actions = new List<Action>();
var bindings = AnimationUtility.GetCurveBindings(_animationClip);
foreach (var binding in bindings)
{
    var curve = AnimationUtility.GetEditorCurve(_animationClip, binding);
    var cb = binding;
 
    // Curve の変更処理
  
    actions.Add(() =>
    {
        AnimationUtility.SetEditorCurve(_animationClip, cb, curve);
    });
}
 
// すべての Curve を削除
_animationClip.ClearCurves();
 
// 予め確保したものを挿入
foreach (var action in actions)
    action.Invoke();