public static AnimationClip Create(SpriteAnimationClipDefinition spriteAnimationDefinition) { AnimationClip animClip = new AnimationClip { name = spriteAnimationDefinition.Name, frameRate = spriteAnimationDefinition.FrameRate, wrapMode = spriteAnimationDefinition.WrapMode }; if (spriteAnimationDefinition.IsLoop) { AnimationClipSettings settings = AnimationUtility.GetAnimationClipSettings(animClip); settings.loopTime = true; AnimationUtility.SetAnimationClipSettings(animClip, settings); } EditorCurveBinding editorCurveBinding = EditorCurveBinding.PPtrCurve(string.Empty, typeof(SpriteRenderer), "m_Sprite"); ObjectReferenceKeyframe[] keyframes = spriteAnimationDefinition.SpriteKeyframes .Select(spriteKeyframe => spriteKeyframe.ToObjectReferenceKeyframe()) .ToArray(); AnimationUtility.SetObjectReferenceCurve(animClip, editorCurveBinding, keyframes); return(animClip); }
public static void Execute() { IEnumerable<Sprite> sprites = Selection.objects.OfType<Sprite>(); if (!sprites.Any()) { Debug.LogWarning("Please selecting sprites."); return; } List<SpriteKeyframeDefinition> spriteKeyframes = sprites .OrderBy(it => it.name) .Select((Sprite sprite, int index) => new SpriteKeyframeDefinition { Value = sprite, Time = 0.1F * index, }) .ToList(); SpriteAnimationClipDefinition definition = new SpriteAnimationClipDefinition { Name = "Sample", SpriteKeyframes = spriteKeyframes, WrapMode = WrapMode.Loop, IsLoop = true, FrameRate = 60.0F }; string path = "Assets/Sample.anim"; AnimationClip animClip = SpriteAnimationClipCreator.Create(definition); AssetDatabase.CreateAsset(animClip, path); }
public static void Execute() { IEnumerable <Sprite> sprites = Selection.objects.OfType <Sprite>(); if (!sprites.Any()) { Debug.LogWarning("Please selecting sprites."); return; } List <SpriteKeyframeDefinition> spriteKeyframes = sprites .OrderBy(it => it.name) .Select((Sprite sprite, int index) => new SpriteKeyframeDefinition { Value = sprite, Time = 0.1F * index, }) .ToList(); SpriteAnimationClipDefinition definition = new SpriteAnimationClipDefinition { Name = "Sample", SpriteKeyframes = spriteKeyframes, WrapMode = WrapMode.Loop, IsLoop = true, FrameRate = 60.0F }; string path = "Assets/Sample.anim"; AnimationClip animClip = SpriteAnimationClipCreator.Create(definition); AssetDatabase.CreateAsset(animClip, path); }
public static AnimationClip Create(SpriteAnimationClipDefinition spriteAnimationDefinition) { AnimationClip animClip = new AnimationClip { name = spriteAnimationDefinition.Name, frameRate = spriteAnimationDefinition.FrameRate, wrapMode = spriteAnimationDefinition.WrapMode }; if (spriteAnimationDefinition.IsLoop) { AnimationClipSettings settings = AnimationUtility.GetAnimationClipSettings(animClip); settings.loopTime = true; AnimationUtility.SetAnimationClipSettings(animClip, settings); } EditorCurveBinding editorCurveBinding = EditorCurveBinding.PPtrCurve(string.Empty, typeof(SpriteRenderer), "m_Sprite"); ObjectReferenceKeyframe[] keyframes = spriteAnimationDefinition.SpriteKeyframes .Select(spriteKeyframe => spriteKeyframe.ToObjectReferenceKeyframe()) .ToArray(); AnimationUtility.SetObjectReferenceCurve(animClip, editorCurveBinding, keyframes); return animClip; }