Unity:使用无法播放的代码生成的AnimationClip,手动创建的AnimationClip

时间:2017-01-12 13:40:14

标签: c# animation unity3d unity5

我正在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:

enter image description here

我发现的唯一值得注意的差异(除了其中一个播放而另一个没有播放)是生成的剪辑的长度在尝试运行它的动画后变为0

Sprite对象和检查器:

enter image description here

我现在一直试图找到我做错了半天而现在没有再靠近一步。

我想提前感谢谁回答这个问题。

问候,

Maethorian

0 个答案:

没有答案