Version: Unity 6.1 Alpha (6000.1)
LanguageEnglish
  • C#

EditorCurveBinding

struct in UnityEditor

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Description

Identifies an animatable property on a Component or GameObject.

The AnimationWindow uses editor curve binding to identify animation properties. This makes clip authoring possible.

You can use this binding to get, set or replace a curve in an AnimationClip when clip authoring. To do this, use the AnimationUtility.GetCurveBindings and AnimationUtility.GetObjectReferenceCurveBindings methods to retrieve the array of the animated bindings for an AnimationClip. For a single property, use AnimationUtility.GetEditorCurve or AnimationUtility.GetObjectReferenceCurve to retrieve the curve identified by the editor curve binding of an AnimationClip. Use the AnimationUtility.SetEditorCurve or AnimationUtility.SetObjectReferenceCurve to set the curve. When recording live animation with the GameObjectRecorder, use the GameObjectRecorder.Bind method to bind a GameObject property identified by an editor curve binding.

Additional resources: AnimationUtility GameObjectRecorder.

using UnityEditor;
using UnityEngine;

public static class EditorCurveBindingExample
{
    // Change these values to match the prefix you want to remove and add.
    // For example, properties with paths "", "Hips", "Hips/LeftLeg",
    // are moved to "Root", "Root/Hips", "Root/Hips/LeftLeg".
    private const string k_PrefixToRemove = "";
    private const string k_PrefixToAdd = "Root";

    // This example moves the animated properties parented to `prefixToRemove` to
    // new properties parented to `prefixToAdd` on a selected animation clip.
    [MenuItem("Example/Reparent Animated Properties On Selected Animation Clip")]
    static void ReparentAnimatedPropertiesOnSelectedAnimationClip()
    {
        var clip = Selection.activeObject as AnimationClip;
        if (clip == null)
        {
            Debug.LogError("No animation clip selected.");
            return;
        }

        var clipBindings = AnimationUtility.GetCurveBindings(clip);

        foreach (var binding in clipBindings)
        {
            if (binding.path.StartsWith(k_PrefixToRemove))
            {
                var newBinding = binding;
                newBinding.path = binding.path.Substring(k_PrefixToRemove.Length);
                if (newBinding.path.StartsWith('/'))
                    newBinding.path = newBinding.path.Substring(1);

                if (string.IsNullOrEmpty(newBinding.path))
                    newBinding.path = k_PrefixToAdd;
                else if (!string.IsNullOrEmpty(k_PrefixToAdd))
                    newBinding.path = k_PrefixToAdd + "/" + newBinding.path;

                var curve = AnimationUtility.GetEditorCurve(clip, binding);

                // You rename curves by removing the old curve and adding a new one
                // with a new binding. You can also use the
                // AnimationUtility.SetEditorCurves method to set multiple curves at once.
                AnimationUtility.SetEditorCurve(clip, binding, null);
                AnimationUtility.SetEditorCurve(clip, newBinding, curve);
            }
        }

        AssetDatabase.SaveAssetIfDirty(clip);
    }
}

Properties

isDiscreteCurveReturns true if the binding is a discrete curve. Returns false otherwise. (Read Only)
isPPtrCurveReturns true if the binding is an object curve. Returns false otherwise (Read Only)
isSerializeReferenceCurveReturns true if the binding is to a curve that points to field on a SerializeReference instance. Returns false otherwise. (Read Only)
pathThe transform path of the object that is animated.
propertyNameThe name of the property to be animated.
typeThe type of the property to be animated.

Static Methods

DiscreteCurveCreates a preconfigured binding for a curve where values should not be interpolated.
FloatCurveCreates a preconfigured binding for a float curve.
PPtrCurveCreates a preconfigured binding for a curve that points to an Object.
SerializeReferenceCurveCreates a preconfigured binding for a curve that points to a SerializeReference instance field.