EditorCurveBinding
структура в UnityEditor
Описание
Идентифицирует анимированное свойство на Component или GameObject.
AnimationWindow использует привязку к кривой редактора для идентификации свойств анимации. Это делает авторство клипа возможным.
Вы можете использовать эту привязку для получения, установки или замены кривой в AnimationClip при авторстве клипа. Для этого используйте методы AnimationUtility.GetCurveBindings и AnimationUtility.GetObjectReferenceCurveBindings для получения массива анимированных привязок для AnimationClip. Для одного свойства используйте AnimationUtility.GetEditorCurve или AnimationUtility.GetObjectReferenceCurve для получения кривой, идентифицированной привязкой к кривой редактора AnimationClip. Используйте AnimationUtility.SetEditorCurve или AnimationUtility.SetObjectReferenceCurve для установки кривой. При записи живой анимации с GameObjectRecorder, используйте метод GameObjectRecorder.Bind для привязки свойства GameObject, идентифицированного привязкой кривой редактора.
Дополнительные ресурсы: 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 | Возвращает true, если привязка является дискретной кривой. В противном случае возвращает false. (Только чтение) |
| isPPtrCurve | Возвращает true, если привязка является кривой объекта. В противном случае возвращает false (только для чтения) |
| isSerializeReferenceCurve | Возвращает true, если привязка является к кривой, которая указывает на поле в экземпляре SerializeReference. Возвращает false в противном случае. (Только чтение) |
| path | Путь преобразования объекта, который будет анимироваться. |
| propertyName | Имя свойства, которое будет анимироваться. |
| type | Тип свойства для анимации. |
Статические методы
| Метод | Описание |
|---|---|
| DiscreteCurve | Создает предварительно настроенную привязку для кривой, значения которой не должны интерполироваться. |
| FloatCurve | Создает предварительно настроенную привязку для кривой с плавающей точкой. |
| PPtrCurve | Создает предварительно настроенную привязку для кривой, которая указывает на Объект. |
| SerializeReferenceCurve | Создает предварительно настроенную привязку для кривой, которая указывает на поле экземпляра SerializeReference. |