public static SetObjectReferenceCurve ( AnimationClip clip, EditorCurveBinding binding, ObjectReferenceKeyframe keyframes ) : void | ||
clip | AnimationClip | |
binding | EditorCurveBinding | |
keyframes | ObjectReferenceKeyframe | Setting this to null will remove the curve. |
return | void |
private static bool CreateAnimation(GameObject gameObject, UnityEngine.Object[] frames) { Array.Sort <UnityEngine.Object>(frames, (UnityEngine.Object a, UnityEngine.Object b) => EditorUtility.NaturalCompare(a.name, b.name)); string message = string.Format("Create a new animation for the game object '{0}':", gameObject.name); string directoryName = Path.GetDirectoryName(AssetDatabase.GetAssetPath(frames[0])); string text = EditorUtility.SaveFilePanelInProject("Create New Animation", "New Animation", "anim", message, directoryName); if (string.IsNullOrEmpty(text)) { return(false); } AnimationClip animationClip = AnimationSelection.AllocateAndSetupClip(true); AssetDatabase.CreateAsset(animationClip, text); AnimationSelection.AddClipToAnimatorComponent(gameObject, animationClip); animationClip.frameRate = 12f; ObjectReferenceKeyframe[] array = new ObjectReferenceKeyframe[frames.Length]; for (int i = 0; i < array.Length; i++) { array[i] = default(ObjectReferenceKeyframe); array[i].value = SpriteUtility.RemapObjectToSprite(frames[i]); array[i].time = (float)i / animationClip.frameRate; } EditorCurveBinding binding = EditorCurveBinding.PPtrCurve(string.Empty, typeof(SpriteRenderer), "m_Sprite"); AnimationUtility.SetObjectReferenceCurve(animationClip, binding, array); return(true); }
private static void CreateAnimation(List <Sprite> sprites, string path) { var frameCount = sprites.Count; var frameLength = 1f / 30f; var name = Path.GetFileNameWithoutExtension(path); var clip = new AnimationClip(); clip.frameRate = 30f; clip.name = name; //AnimationUtility.GetAnimationClipSettings(clip); EditorCurveBinding curveBinding = new EditorCurveBinding(); curveBinding.type = typeof(SpriteRenderer); curveBinding.propertyName = "m_Sprite"; ObjectReferenceKeyframe[] keyFrames = new ObjectReferenceKeyframe[frameCount]; for (int i = 0; i < frameCount; i++) { ObjectReferenceKeyframe kf = new ObjectReferenceKeyframe(); kf.time = i * frameLength; kf.value = sprites[i]; keyFrames[i] = kf; } AnimationUtility.SetObjectReferenceCurve(clip, curveBinding, keyFrames); var startIndex = path.IndexOf("Assets/"); AssetDatabase.CreateAsset(clip, path.Substring(startIndex)); AssetDatabase.Refresh(); AssetDatabase.SaveAssets(); }
private static void AddSpriteAnimationToClip(AnimationClip newClip, UnityEngine.Object[] frames) { newClip.frameRate = 12f; ObjectReferenceKeyframe[] array = new ObjectReferenceKeyframe[frames.Length]; for (int i = 0; i < array.Length; i++) { array[i] = default(ObjectReferenceKeyframe); array[i].value = SpriteUtility.RemapObjectToSprite(frames[i]); array[i].time = (float)i / newClip.frameRate; } EditorCurveBinding binding = EditorCurveBinding.PPtrCurve("", typeof(SpriteRenderer), "m_Sprite"); AnimationUtility.SetObjectReferenceCurve(newClip, binding, array); }
private static void AddSpriteAnimationToClip(AnimationClip newClip, Object[] frames) { newClip.frameRate = 12f; ObjectReferenceKeyframe[] keyframes = new ObjectReferenceKeyframe[frames.Length]; for (int i = 0; i < keyframes.Length; i++) { keyframes[i] = new ObjectReferenceKeyframe(); keyframes[i].value = RemapObjectToSprite(frames[i]); keyframes[i].time = ((float)i) / newClip.frameRate; } EditorCurveBinding binding = EditorCurveBinding.PPtrCurve(string.Empty, typeof(SpriteRenderer), "m_Sprite"); AnimationUtility.SetObjectReferenceCurve(newClip, binding, keyframes); }
private static void AddSpriteAnimationToClip(AnimationClip newClip, UnityEngine.Object[] frames) { newClip.frameRate = 12f; ObjectReferenceKeyframe[] keyframes = new ObjectReferenceKeyframe[frames.Length]; for (int index = 0; index < keyframes.Length; ++index) { keyframes[index] = new ObjectReferenceKeyframe(); keyframes[index].value = (UnityEngine.Object)SpriteUtility.RemapObjectToSprite(frames[index]); keyframes[index].time = (float)index / newClip.frameRate; } EditorCurveBinding binding = EditorCurveBinding.PPtrCurve(string.Empty, typeof(SpriteRenderer), "m_Sprite"); AnimationUtility.SetObjectReferenceCurve(newClip, binding, keyframes); }
void RemoveProperty(IEnumerable <EditorCurveBinding> bindings) { foreach (EditorCurveBinding binding in bindings) { Undo.RegisterCompleteObjectUndo(m_DataSource.animationClip, "Remove Property"); if (binding.isPPtrCurve) { AnimationUtility.SetObjectReferenceCurve(m_DataSource.animationClip, binding, null); } else { AnimationUtility.SetEditorCurve(m_DataSource.animationClip, binding, null); } } }
static void AddSpriteAnimationToClip(AnimationClip newClip, Object[] frames) { // TODO Default framerate be exposed to user? newClip.frameRate = 12; // Add keyframes ObjectReferenceKeyframe[] keyframes = new ObjectReferenceKeyframe[frames.Length]; for (int i = 0; i < keyframes.Length; i++) { keyframes[i] = new ObjectReferenceKeyframe(); keyframes[i].value = RemapObjectToSprite(frames[i]); keyframes[i].time = i / newClip.frameRate; } // Create binding EditorCurveBinding curveBinding = EditorCurveBinding.PPtrCurve("", typeof(SpriteRenderer), "m_Sprite"); // Save curve to clip AnimationUtility.SetObjectReferenceCurve(newClip, (EditorCurveBinding)curveBinding, keyframes); }