private static AddSpriteAnimationToClip ( |
||
newClip | ||
frames | Object | |
Résultat | void |
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("", typeof(SpriteRenderer), "m_Sprite");
AnimationUtility.SetObjectReferenceCurve(newClip, binding, keyframes);
}
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)); bool result; if (!AnimationWindowUtility.EnsureActiveAnimationPlayer(gameObject)) { result = false; } else { Animator closestAnimatorInParents = AnimationWindowUtility.GetClosestAnimatorInParents(gameObject.transform); if (closestAnimatorInParents == null) { result = false; } else { AnimationClip animationClip = AnimationWindowUtility.CreateNewClip(gameObject.name); if (animationClip == null) { result = false; } else { SpriteUtility.AddSpriteAnimationToClip(animationClip, frames); result = AnimationWindowUtility.AddClipToAnimatorComponent(closestAnimatorInParents, animationClip); } } } return(result); }