我正在Unity中使用增强的Reality项目,用户可以在将相机指向某个图像时在手机上看到动画精灵。
雪碧将由一位比利时漫画家创作,并且会非常冗长。为了让我的生活更轻松,我想创建一个编辑器脚本,它从Resources / Sprite文件夹中获取所有精灵并创建一个AnimationClip。
Sprite[] sprites = Resources.LoadAll<Sprite>("sprite");
AnimationClip animClip = new AnimationClip();
animClip.frameRate = 25; // fps
EditorCurveBinding spriteBinding = new EditorCurveBinding();
spriteBinding.type = typeof(SpriteRenderer);
spriteBinding.path = "";
spriteBinding.propertyName = "m_Sprite";
ObjectReferenceKeyframe[] spriteKeyFrames = new ObjectReferenceKeyframe[sprites.Length];
for (int i = 0; i < (sprites.Length); i++)
{
spriteKeyFrames[i] = new ObjectReferenceKeyframe();
spriteKeyFrames[i].time = i / animClip.frameRate;
spriteKeyFrames[i].value = sprites[i];
}
AnimationUtility.SetObjectReferenceCurve(animClip, spriteBinding, spriteKeyFrames);
AnimationClipSettings animClipSett = new AnimationClipSettings();
animClipSett.loopTime = true;
AnimationUtility.SetAnimationClipSettings(animClip, animClipSett);
AssetDatabase.CreateAsset(animClip, "assets/generated.anim");
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
这样可以创建一个AnimationClip,但在动画面板中使用它时没有任何反应。
我手动制作相同的动画以查看是否可行,但确实如此。
动画面板中的蓝色条移动
Animator Panel显示生成的AnimationClip:
我发现的唯一值得注意的差异(除了其中一个播放而另一个没有播放)是生成的剪辑的长度在尝试运行它的动画后变为0
Sprite对象和检查器:
我现在一直试图找到我做错了半天而现在没有再靠近一步。
我想提前感谢谁回答这个问题。
问候,
Maethorian