struct in UnityEditor
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.
CloseFor 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.
CloseIdentifies 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); } }
isDiscreteCurve | Returns true if the binding is a discrete curve. Returns false otherwise. (Read Only) |
isPPtrCurve | Returns true if the binding is an object curve. Returns false otherwise (Read Only) |
isSerializeReferenceCurve | Returns true if the binding is to a curve that points to field on a SerializeReference instance. Returns false otherwise. (Read Only) |
path | The transform path of the object that is animated. |
propertyName | The name of the property to be animated. |
type | The type of the property to be animated. |
DiscreteCurve | Creates a preconfigured binding for a curve where values should not be interpolated. |
FloatCurve | Creates a preconfigured binding for a float curve. |
PPtrCurve | Creates a preconfigured binding for a curve that points to an Object. |
SerializeReferenceCurve | Creates a preconfigured binding for a curve that points to a SerializeReference instance field. |
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.