79104778

Date: 2024-10-19 11:19:41
Score: 0.5
Natty:
Report link

As @derHugo said, it's not possible to directly access curve data (get). But I've found the utility method AnimationUtility.GetCurveBindings(animationClip) which is helpful for the matter if you're in Editor Mode. One usage would be:

public void ScaleAnimationClip(AnimationClip clip, float scale)
{
    var curveData = AnimationUtility.GetCurveBindings(clip);
    foreach (var data in curveData)
    {
        if (data.propertyName.StartsWith("m_LocalPosition"))
        {
            var curve = AnimationUtility.GetEditorCurve(clip, data);
            curve.keys = curve.keys.Select(k => new Keyframe(k.time, k.value * scale, k.inTangent, k.outTangent, k.inWeight, k.outWeight)).ToArray();
            AnimationUtility.SetEditorCurve(clip, data, curve);
            EditorUtility.SetDirty(clip);
        }
    }
    AssetDatabase.SaveAssetIfDirty(clip);
}

For fixing 2D animations after changing sprite pixel per unit property.

Reasons:
  • Long answer (-0.5):
  • Has code block (-0.5):
  • User mentioned (1): @derHugo
  • Low reputation (0.5):
Posted by: Bamdad